2.6.1 UDP
UDP(user datagram protocol)는 경량 프로토콜로서 데이터를 포장하여 호스트의 어떤 포트에서 다른 호스트의 또 어떤 포트로 전달하는 데 쓴다. UDP 데이터그램은 페이로드 앞에 8바이트 헤더를 붙여서 만든다. 그림 2-10에 UDP 헤더의 형태를 그려보았다.
▲ 그림 2-10 UDP header
발신지 포트(16비트): 데이터그램의 출처가 되는 포트 번호를 기재한다. 수신자가 발신자에게 응답하고자 할 때 유용하다.
목적지 포트(16비트): 데이터그램의 목적지가 되는 포트 번호를 기재한다. UDP 모듈은 이 포트에 바인딩해 둔 프로세스에 데이터그램을 전달한다.
길이(16비트): UDP 헤더와 페이로드의 합친 길이를 나타낸다.
체크섬(16비트): UDP 헤더와 페이로드, 그리고 IP 헤더 몇몇 필드를 엮어 계산한 체크섬 값으로, 필수 사항은 아니다. 계산하지 않을 경우 0으로 채워 둔다. 보통 밑단 계층에서 자체적으로 체크섬을 돌리므로 이 필드는 잘 쓰지 않는 편이다.
UDP는 군더더기 없는 프로토콜이다. 각 데이터그램은 자체로 완결된 것으로, 두 호스트 간 어떤 공유 상태에도 의존하지 않는다. 우체통에 일단 집어넣으면 신경 쓰지 않아도 되는 엽서에 비유해도 되겠다. 다만 UDP는 네트워크가 지척거린다고 트래픽을 제한해 주지도 않고, 데이터를 순서대로 전달해 주지도 않고, 데이터의 전달을 보장해 주지도 않는다. 이와는 대조적으로, 다음에 살펴볼 TCP는 이러한 메커니즘을 모두 제공한다.