CS Repo/네트워크 - Top-down Approach + @

UDP

조금씩 차근차근 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의 보수 연산을 체크섬으로 사용한다.