아이티-잉

공부하며 정리하는 IT블로그

Today   Total  
2023년! 복 많이 받으세요

[네트워크] TCP와 UDP 헤더구조

2016. 6. 13. 19:11

TCP(Transmission Control Protocol)

 

 

TCP는 연결 지향 서비스 형태로, 대표적인 통신 프로토콜 중 하나다.

근거리 통신망(LAN), 인트라넷, 인터넷 등에서 신뢰성있는 연결을 돕는다.

 

앞서 OSI 참조모델 포스팅에서도 소개했듯이,

전송계층간 데이터를 전송할 땐 기존의 데이터 앞에 헤더를 추가하여 캡슐화하게 된다.

 

상위 계층에서 하위계층으로 전송할 때 단위를 PDU(Protocol Data Unit)라 하며,

전송계층에서의 TCP가 가진 PDU는 세그먼트(Segment)다.

 

 

 


~ 광고 타임 ~


 

 

 

헤더(Header)

 

(이미지 출처 : mars.netanya.ac.il)

 

 

TCP 세그먼트만 떼어서 헤더를 살펴보면 위와 같은 모습이다.

 

명칭 크기(Bit) 내용
 Source port 16  송신 포트값이 들어있다.
 Destination port 16  수신 포트값이 들어있다.
 Sequence number 32  송신 데이터에 순서를 부여한다.
 Acknowledgement number 32  수신 데이터에 순서를 부여하며, Sequence  number에 대한 응답 값에 해당한다.
 TCP Header length
 (Data Offset)
4  TCP 헤더의 전체 길이를 담아 워드(4Byte)단위로 표현한다. 최소 20byte에서 최대 60byte까지 가능하다.
 Unused
 (Reserved)
3~6  미래의 통신이 어찌될지 몰라서 남겨둔 예비필드이며, 0으로 세팅하게 된다.
Flags
(Control Bit)
 URG(Urgent) 1  Urgent pointer 값의 유효성을 나타낸다.
 ACK(Acknowledgement) 1  Acknowledgement 값의 유효성을 나타낸다.
 PSH(Push) 1  버퍼링된 데이터를 상위 계층에 즉시 전달할 것을 요청한다.
 RST(Reset) 1  연결을 초기화한다.
 SYN(Synchronize) 1  동기화를 위한 번호이며, 양측 최초 패킷에만 값이 부여된다.
 FIN(Finish) 1  전송을 마친다.
 CWR(Congestion Window Reduced) 0~1  혼잡제어를 위해 송신측에서 윈도우 크기를 줄인다.
 ECE(Explicit Congesion Notification) 0~1  혼잡이 발생하면 수신자가 송신측에게 알린다.
 NS(ECN-nonce) 0~1  은폐보호를 위해 추가된 비트다.
 Window size 16  수신자의 버퍼 크기를 지속적으로 보고받아 흐름을 제어할 목적으로 사용한다.
 Check sum 16  오류를 체크하기 위한 필드영역이다. (가상헤더 + 실제헤더 + 데이터 + Padding)
 Urgent pointer 16  URG 값이 있을 경우, 요청한 부분까지 긴급한 데이터 처리를 위해 마지막 바이트에 대한 일련번호를 갖는다.
 Options 0~320  다양한 TCP 옵션을 사용할 때 추가적으로 사용한다.

 

표의 Flags 항목을 보면 크게 3부분으로 나눈 것을 볼 수 있다.

두번째 블록은 TCP 연결설정 및 종료시 주체적으로 사용되는 플래그이며,

세번째 블록은 때에 따라 사용되기도 하고, 아예 헤더에서 제외되기도 한다.

세번째 블록에 대해서는 좀더 공부해봐야 할 것 같다.

 

차후, 확실해지면 수정해보겠다.

 

 

 


~ 광고 타임 ~


 

 

 

UDP(User Datagram Protocol)

 

 

비연결형 서비스로, TCP와 대비되는 프로토콜이다.

위 이미지와 같이, 무작정 데이터를 뿌리고 보는 성격이 있다.

 

즉, TCP와 달리 가상회선 설정없이 데이터를 전송하기때문에 수신 순서가 불규칙하거나 손실될 수 있다.

UDP 또한 TCP와 마찬가지로 OSI 참조모델의 전송계층에서 사용되며, PDU는 Datagram이다.

 

 

 

헤더

 

(이미지 출처 : 정보통신기술용어해설)

 

 

TCP에 비해 귀여운 몸집의 UDP 헤더를 볼 수 있다.

그래서 별도로 표를 그리진 않겠다.

 

1) 발신 포트번호(Source port) : TCP와 동일한 필드영역으로, 16bit 크기를 가진다.

2) 수신 포트번호(Destination port) : TCP와 동일한 필드 영역으로, 16bit 크기를 가진다.

3) 길이(UDP Header Length) : UDP 헤더가 붙은 패킷 전체 길이를 바이트로 담는다. 헤더만 있을 경우 최소값은 8이된다.

4) 체크섬(Check sum) : 오류를 체크하는 기능이며, TCP에서는 오류가 발견되면 재전송이 가능하지만 UDP는 그냥 알고 넘어갈 뿐이다.

 

 

 


~ 광고 타임 ~


 

 

 

 

마치며

 

TCP가 신중한 성격이라면, UDP는 쿨한 성격이다.

 

이처럼 어울리는 듯 어울리지 않는 TCP와 UDP는 늘 단짝처럼 붙어다닌다.

그러므로 비교하며 두 프로토콜의 차이를 알아두는 것이 도움될 것이다.

 

 

끝.

 

 

 

 

참고자료

 

정보통신기술용어해설 / 위키 / 지식과 생각정리 블로그