K 개발자

UDP 프로토콜 본문

OS/네트워크

UDP 프로토콜

ddingz 2021. 8. 4. 22:38

UDP 헤더 구조

UDPUser Datagram Protocol는 인터넷에서 사용하는 프로토콜 중 구조가 가장 간단하다.
하부의 IP 프로토콜을 이용해 비연결형 서비스를 지원하는 UDP는 작지만 빠른 전송이 가능하며, 다음과 같은 특징이 있다.

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

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

UDP 헤더의 구조

UDP 헤더UDP Header의 구조이다.
UDP 헤더의 상단에 있는 숫자는 비트 수이고, 각 필드의 의미는 다음과 같다.

  • Source Port/Destination Port(송신 포트/수신 포트) : 송수신 프로세스에 할당된 네트워크 포트 번호이다.
  • Length(길이) : 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기이다.
  • Checksum(체크섬) : 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공하여 수신 프로세스가 데이터그램 변형 오류를 감지할 수 있다.

UDP의 데이터그램 전송

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

UDP에서의 데이터그램 분실

데이터그램 분실

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

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

도착 순서 변경

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

'OS > 네트워크' 카테고리의 다른 글

상위 계층의 이해  (0) 2021.08.05
RTP 프로토콜  (0) 2021.08.05
TCP 프로토콜을 이용한 데이터 전송  (0) 2021.08.04
TCP 프로토콜  (0) 2021.08.03
전송 계층의 기능  (0) 2021.08.02
Comments