dh_0e

[Transport Layer] UDP (User Datagram Protocol) 본문

Network Programming/Transport Layer

[Transport Layer] UDP (User Datagram Protocol)

dh_0e 2025. 6. 3. 00:27

User Datagram Format

  • UDP 패킷의 헤더 구조는 총 8바이트로 고정이며 4개의 필드로 구성됨

  • Source Port Number(16bit): 송신 측 포트 번호, 범위 0~65,535
  • Destination Port Number(16bit): 수신 측 포트 번호, 범위 0~65,535
  • Length(16bit): 헤더(항상 8바이트) + 데이터의 전체 길이, 단위: 바이트
  • Checksum(16bit): 오류 검출용 필드 (선택적 사용 가능)

 

Process-to-Process Communication

  • UDP도 TCP처럼 포트 번호를 이용해서 응용 프로그램 단위로 통신을 연결해줌
  • 여러 프로세스가 UDP를 사용할 수 있도록 UDP는 여러 포트 번호를 지원
  • 같은 컴퓨터 내부에서 UDP 통신을 하면 루프백 인터페이스(127.0.0.1)와 포트 번호(ex:8000)를 사용

Several port numbers used by UDP

  • 패킷이 TCP인지 UDP인지는 IP 헤더의 Protocol 필드 확인 (6이면 TCP, 17이면 UDP)

 

Connectionless Services

  • UDP는 연결 설정 없이 패킷을 무작위로 전송
  • 개별 패킷은 완전히 독립적이며 출발지와 목적지가 같더라도 다른 패킷과 아무 관계 없음
  • UDP는 시퀀스 번호 부여 안 함
  • 수신 애플리케이션이 직접 순서를 재조립해야 함
  • 각 메시지는 반드시 하나의 UDP 데이터그램에 담길 수 있을 만큼 작아야 함
  • Flow Control, Error Control 없음
    • 수신자가 데이터 감당할 수 있는지 여부 관심 없음 그냥 계속 보냄
    • 수신 실패나 손실 여부 그런거 모름 중복, 손실 등은 애플리케이션이 직접 처리해야 함
    • 예외: Checksum을 통한 간단한 오류 검출만 가능

 

Checksum

  • Optional 하기 때문에 0으로 설정하면 목적지에서 확인하고 계산 생략
    • 진짜 결과가 0이면? 0이 아닌 값(모두 1 → 0xFFFF)로 바꿔서 전달

  • UDP의 checksum은 총 3가지 부분을 더해서 계산
    1. Pseudoheader (가짜 헤더): IP 헤더의 일부 필드를 복사해서 만든 가짜 헤더
      1. 출발지 IP 주소
      2. 목적지 IP 주소
      3. 예약 필드 (0으로 채움)
      4. 프로토콜 번호 (UDP는 17)
      5. UDP total length
    2. UDP header
    3. Application Data (실제 데이터)

checksum Example

  • checksum 연산은 NIC(Network Interface Card)에서 해줌

 

Encapsulation / Decapsulation

  • Encapsulation: app 계층에서 내려온 데이터를 UDP 헤더를 붙여 UDP 패킷으로 만드는 과정
  • Decapsulation: 수신 측에서 UDP 패킷을 받아서 UDP 헤더를 제거하고 데이터를 상위 계층으로 전달하는 과정

 

Queuing (큐잉)

  • 수신 측에서 포트로 도달한 데이터를 임시 저장하는 버퍼(큐) 처리 방식

  • 적절한 대기열이 없거나 버퍼 오버플로우가 발생했을 때 ICMP 프로토콜을 사용하여 포트에 도달할 수 없다는 메시지를 보냄
    • UDP는 오류 제어 기능이 없으므로 ICMP에 메시지를 담아 보냄

 

UDP Applications

  • 영상 스트리밍, 음성 통화, 게임 등 수신된 메시지의 구간 간 지연이 발생하면 안 되는 실시간 애플리케이션에 사용
    • 조금 손실되더라도 빠르게 처리되는 게 중요 (패킷 하나 손실됐다고 재전송 X)
  • 하나의 송신자가 여러 수신자에게 동시에 데이터를 전송하는 Multicasting에 유용
    • TCP는 멀티캐스트 지원 안 함
    • UDP는 가볍고 제어가 없기 때문에 멀티캐스트에 적합
  • RIP(Routing Information Protocol)에서 라우팅 정보를 주기적으로 보내는 데에 UDP 사용
    • 빠르고 간단한 통신이 필요할 때 적합
    • 네트워크가 자체적으로 오류 허용하도록 설계됨