L4 ▶ TCP Header / UDP Header
2024. 6. 2. 17:06ㆍCS/네트워크
참고 자료 : 널널한 개발자님의 외워서 끝내는 네트워크 핵심이론 - 기초
TCP Header 형식
자세한 설명은 해당 블로그를 참고하자. TCP 헤더 설명 뿐만 아니라 등장 배경도 잘 설명되어있다.
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는 혼잡제어를 관리하는 플래그가 존재하지 않는다. 즉, 혼잡제어를 하지 않는다. 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 |