여기서는 4계층에서 간단히 다뤘던 IP와 TCP&UDP 등의 프로토콜에 대해 좀 더 자세히 살펴보도록 한다.
인터넷 계층에서 활용되는 주요 프로토콜로, End-to-End
통신을 수행하는 것이 주요 역할임
데이터 전송을 위해서는 전달받은 세그먼트에 IP 헤더를 추가하여 IP 패킷
만들어야 하는데, 이는 쉽게 말해 네트워크 상에서의 출발지와 목적지 정보를 데이터에 추가하는 것을 의미함.
출발지에서 내보내진 IP 패킷은 네트워크상의 라우터
를 거쳐, 최종 목적지로 도착하게 되며 이를 라우팅
이라고 부름
IP 주소
는 통신 상대가 되는 호스트들을 식별하기 위한 정보로, 네트워크 상에서 호스트의 주소 정보 정도로 이해하면 됨
IP주소는 32비트이며, 8비트씩 0~255 사이의 10진수로 변환하여 '.'으로 구분하여 표기함(도트형 10진 표기
)
이용 범위에 따라 공인 IP주소
와 사설 IP주소
로 나눠볼 수 있는데, 공인IP 주소는 전체 인터넷에서 중복되지 않게 관리되며, 사설 IP 주소는 특정 사설 네트워크 내에서 이용되기 때문에 사설 네트워크 내에서만 중복되지 않는다면 문제되지 않음
NAT(Network Address Translation)
을 통해 IP 주소를 변환하며, 라우터
는 나중에 응답이 돌아올 경우를 대비해서, 변환한 주소의 대응을 따로 NAT 테이블
에 보존해뒀다가 응답이 라우터로 오면 목적지 IP 주소를 테이블을 보고 다시 사설 IP 주소로 변환함IP 프로토콜로 데이터 전송시, 목적지는 여러개여도 상관이 없으며, 따라서 데이터 전송 방식을 목적지 수에 따라 3가지로 분류할 수 있음
유니캐스트
서브넷(Subnet)
이라고 하며, IP 주소에서 어디까지가 네트워크부인지 IP 주소 형태로 명시한 것을 서브넷마스크(Subnet Mask)
라고 함브로드캐스트
2555.255.255.255
가 브로드캐스트 IP 주소를 의미하며, 이는 32비트가 모두 1로 이루어진 주소임멀티캐스트
224.0.0.2
와 같은 멀티캐스트 주소는 같은 네트워크 상의 모든 라우터 그룹을 의미함여기서 3가지 방식 모두 출발지 IP는 유니캐스트 IP주소가 됨
ICMP
라고 불리는 프로토콜을 활용하는 것도달불능 메시지
라고 부름ping
명령어를 통해 미리 요청/응답 메시지를 보내 지정된 IP 주소와의 통신이 가능한 지를 확인함MAC 주소
가 지정됨ARP
가 사용되는 것이며, IP 주소와 MAC 주소를 대응시키는 것을 가리켜 주소 해석
이라고 부름TCP/IP에서 제공되는 신뢰성이 제공되는 연결지향형 데이터 전송 서비스를 일컫음
신뢰성 보장, 흐름 제어, 혼잡 제어 등의 역할을 수행함
목적지로 전송할 데이터를 전송에 알맞은 최대 세그먼트 크기(Maximum Segment Size)
로 절단하여, 세그먼트(Segment)
단위로 데이터를 전송
검사합(checksum)
이라고 불리는, 일종의 중복 및 오류 검사를 수행하며, 데이터 전송의 순서가 보장됨
패킷 전송시 TCP 프로토콜은 보통 일정한 시간을 정해놓고, 제 시간 안에 ACK 패킷이 도착하지 않으면 이를 Timeout으로 간주하여 패킷을 재전송하여 신뢰성 보장에 기여함
흐름 제어 : 수신자 버퍼의 오버플로우를 방지하는 것을 의미
혼잡 제어 : 전송되는 패킷이 과도하게 많아지는 상황을 방지함을 의미
사전에 3 Way Handshake
를 통해 어플리케이션 간 통신이 정상적으로 이루어질 수 있는 지 확인하며, 이것이 TCP의 연결지향적 특성을 갖게 하는 주요 특징이라 할 수 있음
SYN 패킷
을 보내며, 응답을 기다리는 SYN_SENT
상태가 됨Listen
)에서 패킷을 받으면 SYN_RESEIVED
상태가 되며, 데이터를 송신해도 좋다는 의미로 ACK 패킷
으로 응답하며, 클라이언트로부터의 응답을 기다림ACK패킷
보내고, 이후부터는 TCP 커넥션이 이루어진 ESTABLISHED
상태가 되어 데이터를 주고받을 수 있게 됨데이터의 온전한 상태 유지 및 전송 순서 보장 등의 이점이 있지만, 앞서 언급한 3 Way Handshake와 같은 연결 설정 등으로 인해 후술할 UDP
에 비해 상대적으로 속도가 느림
또한 1:1 통신만 가능하다는 한계가 있음
보통 TCP 세그먼트라고 함은, 어플리케이션 계층에서 보내진 데이터에 TCP 헤더가 추가된 것을 말함
TCP 헤더에는 출발지와 목적지 포트번호, 시퀀스 번호, ACK 번호, 검사합 등의 요소가 존재
시퀀스 번호 : 데이터 전송의 순서 보장을 위한 정보로, 데이터가 분할된 경우에는 시퀀스 번호를 통해 어떻게 분할되었는 지 알 수 있음(전송되는 바이트 수를 기준으로 점점 증가)
MSS
기준 세그먼트가 분할되는 것과 대응되는 내용!ACK 번호 : 응답 번호라고도 하며 수신측 프로세스에서 수신한 바이트 수를 제대로 응답하기 위해 사용됨
Flags : SYN, ACK 등의 제어 번호가 담긴 제어 비트 영역
Window Size : 수신 윈도우의 버퍼 크기를 지정할 때 사용되는데, 사이즈가 0일 경우에는 송신 프로세스가 전송을 중지함
포트 번호 : TCP 프로토콜을 통해 연결되는 송, 수신측(출발지-목적지 양 끝)에 할당되는 포트 번호
검사합(checksum) : 세그먼트에 포함된 헤더 및 데이터에 대한 오류 검출 용도
비연결, 비신뢰적 특징 을 갖는 전송계층의 프로토콜을 일컫음
사전 연결 과정 없이 일단 데이터그램을 전송하고 보기 때문에, 빠른 전송이 가능하지만 신뢰성은 떨어짐
UDP가 제공하는 서비스는 최소한의 신뢰성을 위한 오류제어 메커니즘으로 검사합(checksum) 기능을 옵션으로 제공할 뿐임(TCP와의 공통점)
결국 신뢰성 보장 등을 위해서는 어플리케이션에서 따로 추가적인 작업이 필요해짐