조금씩 차근차근
2025. 4. 18. 00:35
본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.
UDP는 User Datagram Protocl의 약자로, TCP보다 훨씬 가볍고, 커스터마이징이 용이한 프로토콜이다. (하얀 도화지를 상상하면 좋다.)
주로 아래와 같은 즉시성을 요구하는 애플리케이션에서 사용된다.
- 음성 통신 (Voice over IP, VoIP)
- DNS
- DHCP
- NTP(시간 동기화 프로토콜)
동작 방식
- 데이터그램을 만들고, 서버나 상대를 신경쓰지 않고 계속 보내기만 한다.
- 데이터를 받아들인 쪽은 UDP 헤더에 포함된 UDP 데이터그램 길이와 체크섬을 이용해 데이터가 손상되지 않았는가를 검증한다.
- 체크섬 검증에 성공하면, 데이터를 받아들인다.
UDP의 IP 헤더의 프로토콜 번호는 '17(0x11)' 이다.
UDP 패킷 포맷
- 헤더의 길이를 8바이트로 갖는다.
송신지 포트 번호
- 2바이트(16비트) 값이다.
- OS가 정한 범위에서 무작위로 할당한 값을 기록한다.
수신지 포트 번호
- 2바이트(16비트) 값이다.
- 애플리케이션별로 정의된 값을 기록한다.
- 서버가 요구하는 포트 번호를 기록한다.
UDP 데이터그램 길이
- UDP 헤더와 UDP 페이로드를 합친 데이터그램 전체 길이를 나타내는 2바이트(16비트) 필드이다.
- 바이트 단위로 값이 설정된다.
- 최솟값은 UDP 헤더만으로 구성된 경우인 '8'이다.
- 최댓값은 MTU에서 IP 헤더의 길이(20바이트)를 뺀 값이다.
체크섬
- 받아들인 UDP 데이터그램의 손상 여부 정합성 체크에 사용되는 2바이트(16비트) 필드이다.
- 1의 보수 연산을 체크섬으로 사용한다.