IP (인터넷 프로토콜)
IP (Internet Protocol)은 인터넷을 통해 데이터를 전송하는 데 사용되는 주요 프로토콜 중 하나입니다.
이 프로토콜은 컴퓨터 네트워크 간의 통신을 가능하게 하고, 인터넷에서 데이터를 라우팅하는 기능을 수행합니다.
간단히 말하면, IP는 데이터를 출발지에서 목적지로 전달하는 주소 체계를 제공하는 것입니다.
IP는 일반적으로 두 가지 버전으로 사용됩니다.
IPv4 (Internet Protocol version 4):
- 가장 오래된 버전으로, 32비트 주소 체계를 사용합니다.
- 이는 대략 43억 개의 주소를 지원하며, 인터넷에서 처음 개발된 시점부터 널리 사용되었습니다.
- 그러나 인터넷의 폭발적인 성장으로 인해 IPv4 주소가 고갈되는 상황이 발생했습니다.
IPv6 (Internet Protocol version 6):
- 이 버전은 주소 고갈 문제를 해결하기 위해 개발되었습니다.
- IPv6는 128비트 주소 체계를 사용하며, 거의 무제한으로 많은 수의 주소를 제공합니다.
- 이로 인해 인터넷의 확장성과 연결 가능한 장치 수가 대폭 증가하였습니다.
IP 주소는 네트워크 상의 모든 기기(컴퓨터, 스마트폰, 서버 등)에 할당됩니다.
각 IP 주소는 고유하며, 출발지와 목적지 사이의 데이터 패킷이 올바른 위치로 전달되도록 보장합니다.
데이터 패킷은 라우터를 통해 여러 네트워크를 거쳐 전송되며, 이동하는 동안에는 여러 중간지점을 거칠 수 있습니다.
인터넷의 성장으로 인해 IPv4 주소 고갈 문제가 심각해져서 현재는 IPv6 주소 체계의 도입이 증가하고 있습니다.
IPv6의 채택으로 인터넷 기기들은 더 많은 주소를 할당받고, 네트워크 통신의 안정성과 확장성을 향상시킬 수 있게 되었습니다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송이 가능해야함
- 비신뢰성
- 중간에 패킷이 사라진다면?
- 패킷이 순서대로 안온다면?
- 프로그램구분
- 같은 ip를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?
이러한 IP 프로토콜의 한계를 보완해주는 기술이 바로 TCP UDP 입니다.
TCP, UDP
TCP (Transmission Control Protocol)는 인터넷 프로토콜 스위트(IP 프로토콜을 포함하는 여러 프로토콜의 집합)에서 사용되는 주요 프로토콜 중 하나입니다.
TCP는 데이터를 안정적으로 전송하기 위해 설계된 연결 지향형 프로토콜로, 인터넷에서 가장 많이 사용되는 전송 계층 프로토콜입니다.
TCP는 다음과 같은 특징을 가지고 있습니다:
- 연결 지향형: 데이터를 전송하기 전에 먼저 두 기기 간의 가상 연결을 설정합니다. 데이터를 전송하고나면 연결을 해제합니다. 이러한 연결 설정과 해제 과정은 신뢰성 있는 데이터 전송을 보장하는데 도움을 줍니다.
- 신뢰성: TCP는 데이터 전송 중에 발생할 수 있는 손실, 중복, 순서 오류 등을 감지하고 복구하는 메커니즘을 제공합니다. 이를 통해 데이터의 정확성과 순서를 보장하여 안정적인 데이터 전송을 가능케 합니다.
- 흐름 제어: 수신자의 수용 능력을 고려하여 데이터를 전송하는 속도를 조절하여 네트워크 혼잡을 방지하고 데이터 손실을 최소화합니다.
- 혼잡 제어: 네트워크 내의 혼잡 상태를 모니터링하고 네트워크의 트래픽을 조절하여 혼잡을 최소화하고 성능을 향상시킵니다.
TCP의 동작 방식은 크게 세 가지 단계로 나뉩니다:
- 연결 설정 (Three-way Handshake): 데이터 전송을 시작하기 전에 송신자와 수신자 사이의 가상 연결을 설정해야 합니다. 이를 위해 세그먼트(패킷) 교환을 통해 연결을 설정하는 Three-way Handshake 과정이 이루어집니다. (위 그림 참고)
- 데이터 전달 보증: TCP는 데이터를 안정적으로 전달하기 위해 데이터 전송 중에 발생할 수 있는 손실이나 오류를 감지하고 복구하는 메커니즘을 갖추고 있습니다. 데이터를 수신한 측은 송신 측으로부터 수신 확인 응답을 보냄으로써 데이터가 정상적으로 도착했음을 알립니다. 송신 측은 수신 확인 응답을 받을 때까지 데이터를 재전송하여 데이터의 전달을 보장합니다. 이러한 과정을 통해 데이터 손실을 최소화하고 안정적인 데이터 전송을 가능하게 합니다.
- 순서 보장: TCP는 데이터를 보내는 순서대로 수신자가 받도록 보장합니다. 데이터가 전송되면, 수신자는 정확한 순서대로 데이터를 재조립하여 애플리케이션에 전달합니다. TCP는 수신 측에서 데이터를 올바른 순서로 재조립할 수 있도록 시퀀스 번호와 확인 응답 번호를 사용하여 데이터 패킷을 추적하고 관리합니다.
TCP는 웹 브라우징, 이메일, 파일 전송, 데이터베이스 연결 등을 포함하여 인터넷에서 거의 모든 데이터 통신에 사용되며, 신뢰성과 안정성을 필요로 하는 상황에서 주로 선택되는 프로토콜입니다.
UDP 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 X - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
PORT
한번에 둘 이상 연결해야 한다면?
여기서 TCP/IP 패킷 정보에 출발지 PORT와 목적지 PORT가 포함되어 있다는 사실을 잊으면 안됩니다.
포트(Port)는 컴퓨터 네트워크에서 데이터 통신을 할 때, 각 어플리케이션 또는 서비스가 사용하는 고유한 번호입니다. 포트 번호는 TCP와 UDP 프로토콜에서 사용되며, 데이터가 특정 어플리케이션으로 전달되도록 지정합니다.
포트는 네트워크 통신에서 중요한 역할을 하며, 데이터가 어떤 어플리케이션으로 전달되어야 하는지를 지정하는 데 사용됩니다. 이를 통해 서로 다른 서비스들이 하나의 IP 주소를 공유하여 동작할 수 있게 되며, 인터넷에서 다양한 서비스들이 동작하는 기반을 제공합니다.
- 포트 번호는 0부터 65535까지의 범위를 갖습니다.
- 이 범위는 0~1023은 잘 알려진 포트 번호로 사용되며, 특정 서비스와 어플리케이션들이 주로 할당받습니다.
- 예를 들어, 웹 서버는 보통 80번 포트를 사용하고, HTTPS는 443번 포트를 사용합니다.
- 일반적으로, 하나의 IP 주소는 많은 포트를 가질 수 있으며, 이를 통해 다양한 서비스와 어플리케이션들이 동시에 동작할 수 있습니다.
- 특정 포트 번호를 사용하는 서비스에 데이터를 전송하고자 할 때, 해당 서비스의 포트 번호로 데이터를 보내게 됩니다.
DNS
- IP는 기억하기 어렵습니다.
- IP는 변경될 가능성이 있습니다.
DNS 도메인 네임 시스템
- 전화번호부와 같은 역할을 합니다.
- 도메인 명을 IP 주소로 변환합니다.
'Back End > HTTP' 카테고리의 다른 글
[HTTP] 쿠키 (0) | 2023.07.21 |
---|---|
[HTTP] 상태코드 (aka. 200, 404 ...) (0) | 2023.07.19 |
[HTTP] HTTP 메서드 활용 (0) | 2023.07.19 |
[HTTP] HTTP 메서드 (0) | 2023.07.18 |
[HTTP] HTTP란? (0) | 2023.07.18 |