CS/Network

[Chapter 10] UDP 프로토콜(UDP 헤더 구조)

devrabbit22 2025. 2. 17. 01:50

UDP(User Datagram Protocol)는 인터넷에서 사용하는 프로토콜 중 구조가 가장 간단하다.

하부의 IP프로토콜을 이용해 비연결형 서비스를 지원하는 UDP는 작지만 빠른 전송이 가능하다.

특징

  • 비연결형 서비스를 제공한다.
  • 헤더와 전송 데이터에 대한 체크섬 기능을 제공한다.
  • Best Effort 전달 방식을 지원한다.

UDP는 상위 계층에서 받은 데이터를 IP프로토콜에 전달하지만, 전송한 데이터그램이 목적지 까지 제대로 도착했는지 확인하지 않는다. 따라서 TCP 보다 신뢰성이 떨어져 일반 응용 프로그래머들 사이에서는 덜 선호되고 있다. 하지만 프로토콜을 처리하는 기능이 작아 TCP 보다 데이터 처리가 빠르므로 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 사용하는 것이 유리하다.

UDP 헤더 구조

UDP 헤더 구조는 TCP보다 단순해 의미와 기능을 쉽게 파악할 수 있다. 또한 프로토콜에서 수행하는 기능도 간단해 프로토콜의 오버헤드가 작은 편이다.

UDP 헤더 구조

UDP 헤더의 상단에 있는 숫자는 비트 수 이다.

각 필드의 의미

  • Source Port/Destination Port(송신/수신 포트) : 송수신 프로세스에 할당된 네트워크 포트 번호이다. 호스트에서 실행되는 프로세스를 구분하는데 이용한다. 호스트는 IP 프로토콜의 IP 주소로 구분하므로, 인터넷에서 실행되는 네트워크 프로세스의 고유 구분자는 호스트의 IP 주소와 프로세스 포트 번호의 조합이다. UDP 포트 번호는 TCP 포트 번호와 독립적으로 관리되고 할당된다.
  • Length(길이) : 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기이다. 단위는 바이트이고, UDP 헤더의 크기가 8바이트 이므로 최솟값은 8이다.
  • Checksum : 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공하여 수신 프로세스가 데이터 그램 변형 오류를 감지할 수 있다. IP프로토콜은 헤더만 체크섬을 계산하지만, UDP는 데이터까지 체크섬을 계산한다. 수신 프로세스는 체크섬 오류를 발견하면 해당 데이터그램을 버린다. UDP의 체크섬 기능은 옵션이므로 필드 값이 0이면 송신 프로세스가 체크섬 계산을 하지 않았다는 의미가 되어, 수신 프로세스는 체크섬으로 오류 검출 기능을 수행하지 않는다. 이 경우는 IP와 UDP는 모두 사용자 데이터에 대한 오류 검사를 수행하지 않는 결과를 야기한다.

 

UDP 데이터그램의 Length 필드는 크기가 16비트이므로 데이터그램의 최대 크기는 이론상(65,535(0~2^16-1)바이트이다. 그러나 응용 프로그램을 포함한 다른 계층과의 연관성 문제를 고려하여 일반적으로 8,192바이트를 넘지 않게 사용한다.

UDP는 TCP보다 구조가 아주 단순해 전송 효율이 좋으며, 고속 전송이 필요한 환경에 유용하다.

특히 덩치가 큰 TCP를 구현하기에는 메모리 등이 작은 네트워크 장비에서 사용하기 적합하다.

 

UDP의 데이터그램 전송

UDP는 비연결형 서비스를 이용하여 데이터그램을 전송하며, 각 데이터그램은 전송 과정에서 독립적으로 중개된다. 그리고 데이터그램이 목적지까지 도착할 수 있도록 최선을 다하지만, 반드시 목적지에 도착하는 것을 보장하지 않는다. 또한 슬라이딩 윈도우 프로토콜과 같은 흐름 제어 기능도 제공하지 않아, 버퍼 오버플로(Buffer Overflow)에 의한 데이터 분실 오류가 발생할 수 있다.

UDP를 사용해 데이터그램을 전송할 때는 오류 발생 가능성을 항상 염두에 두어야 한다. 오류 유형은 데이터가 목적지에 도착하지 못하는 데이터그램 분실과 데이터그램의 도착 순서가 바뀌는 도착 순서 변경으로 나뉜다.

UDP에서의 데이터그램 분실

데이터그램 분실

송신 프로세스가 전송한 데이터그램 네 개가 첫 번째 라우터에서 두 번째 라우터로 전송되는 과정에서 3번 데이터그램에 오류가 발생하여 다음 라우터에 도착하지 못한 현상이다.

UDP는 분실 오류를 복구하는 기능을 수행하지 않으므로, 수신 프로세스는 1, 2, 4번 데이터그램만 도착한다.

UDP에서 데이터그램 분실 오류는 상위 계층 스스로 데이터 분실을 확인해 복구해야한다.

UDP 헤더 구조에서 알 수 있듯이, 데이터의 순서 번호 기능을 제공하지 않으므로 데이터그램 분실 여부를 확인할 수 없다, 따라서 응용 프로그램에서 데이터 분실을 감지하려면 순서 번호와 유사한 기능을 프로그램 내부에 구현해야 한다.

UDP에서의 데이터그램 도착 순서 변경

도착 순서 변경

데이터 그램의 전송 순서가 뒤바뀌어 수신 프로세스에 도착한 경우. UDP는 각 데이터그램을 개별 전송 경로를 선택해 전송한다. 1, 2번 데이터그램은 아래쪽 경로로, 3, 4 데이터그램은 위쪽 경로로 전달 될 수 있는데, 각 경로에서 데이터를 얼마나 빠르게 전송할 수 있는지도 예측할 수 없다. 위의 예를 보면 3, 4 데이터그램이 위쪽 경로를 선택했고 먼저 수신 프로세스에 도착하였으므로 최종적인 도착 순서가 3, 4, 1, 2번으로 변경되었다.

데이터그램 분실 오류의 경우와 마찬가지로 도착 순서 변경 오류를 해결할 수 없는 이유는 데이터그램의 순서 번호 기능이 없기 때문이다. 도착 순서 변경 오류를 해결하려면 UDP를 사용하는 응용 프로그램의 내부에 순서 번호 기능이 구현되어야 한다.


Reference

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

https://soso-hyeon.tistory.com/108

 

[쉽게 배우는 데이터 통신과 네트워크] CH10. 전송 계층

01. UDP 프로토콜비연결형 서비스를 제공한다.헤더와 전송 데이터에 대한 체크섬 기능을 제공한다.Best Effort 전달 방식을 지원한다. 1. UDP 헤더 구조Source Port / Desination Port (송신 포트 / 수신 포트)

soso-hyeon.tistory.com