L4 ▶ TCP Header / UDP Header

2024. 6. 2. 17:06CS/네트워크

참고 자료 : 널널한 개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초

TCP Header 형식

TCP Header

 

자세한 설명은 해당 블로그를 참고하자. TCP 헤더 설명 뿐만 아니라 등장 배경도 잘 설명되어있다.

https://evan-moon.github.io/2019/11/10/header-of-tcp/#tcp%EC%9D%98-%ED%97%A4%EB%8D%94%EB%A5%BC-%EA%B9%8C%EB%B3%B4%EC%9E%90

 

TCP는 20bytes의 헤더를 사용하며 여러가지 옵션을 사용했을 최대 60bytes까지 사용할 수 있다.

  • Source port : 출발지의 포트번호이다. 16bit의 크기를 가진다.
  • Destination port : 목적지의 포트번호이다. 16bit의 크기를 가진다.
  • Sequence Number : 전송하는 데이터의 순서를 의미한다. 시퀀스 넘버는 전송하려는 데이터의 byte수만큼 증가한다. 만약 데이터가 500byte이면 500씩 시퀀스 넘버가 증가하게 된다.
  • Data offset : TCP Payload의 위치를 계산할 때 사용한다.
  • Flags
    • NS, CWR, ECE : 혼잡제어를 위한 플래그이다. 패킷 유실, 재전송, 중복 ACK, Out of order, Zero Window를 통제한다.
    • ACK, SYN, FIN : TCP Connection을 할 때 사용하는 플래그이다. 3-way-handshake에서 언급했다.
  • Window Size : 한번에 전송할 수 있는 데이터의 양을 의미하는 값이 담긴다. 네트워크 속도가 프로세스 처리속도보다 빠른 경우 Zero Window가 발생한다.
  • Checksum : 데이터가 손상되었는지를 체크하는 값이다.

UDP Header 형식

UDP Header

 

UDP는 혼잡제어를 관리하는 플래그가 존재하지 않는다. 즉, 혼잡제어를 하지 않는다. Error Detection만 진행한다.

 

UDP를 사용하는 대표적인 예시로 영상 송출, 영상 스트리밍이 있다. 각 호스트마다 네트워크 속도가 천차만별이기 때문에 어떤 호스트는 네트워크가 빠르고, 어떤 호스트는 네트워크가 느릴 수 있다. 그때마다 느린 네트워크 환경에 모든 호스트의 속도를 맞춘다면 빠른 호스트에서 불만이 있지 않겠는가. 이렇게 하향 평준화를 막기 위해 UDP를 사용하곤 한다. 같은 이유로 게임서버도 UDP 구현을 하는 경우가 있다.

'CS > 네트워크' 카테고리의 다른 글

DNS  (0) 2024.06.02
L4 ▶ TCP 연결이라는 착각  (1) 2024.06.02
L4 ▶ TCP 연결 / 종료 과정  (1) 2024.06.02
L4 ▶ TCP / UDP  (0) 2024.05.26
L3 ▶ Ping과 RTT  (0) 2024.05.24