UDP 란?

OSI 7Layer 4계층인 Transport Layer 에서 동작하는 프로토콜이다. TCP 와 달리, 연결 및 해제 과정을 거치지 않아 Connectionless 비연결지향형 프로토콜이다. 또한, Error-Control 및 Flow-Control 기능을 제공하지 않으므로 비신뢰성 프로토콜라고도 한다. (단, 일부 선택적 Error-Control 이 가능한 경우도 있다.)

 

 

UDP 세그먼트의 구조

전송계층의 데이터 단위는 Segment 라고 불리우며, 8Bytes 의 Header 와 가변적인 길이의 Data 필드로 구성되어 있다.

 

 

1. Source port address & Destination port address

전송 계층에서는 Socket Address 를 사용하므로 Source & Destination 포트 주소가 필요하다.

 

2. Total Length

UDP Length = IP Packet Length - IP Header Length 

-> UDP 세그먼트는 IP 패킷으로 캡슐화 되기 때문이다.

 

(같은 Process를 서비스하는 Server 가 여러 개인 경우, IP 주소를 통해 식별한다.)

 

3. Checksum

UDP는 기본적으로 Error-Control 을 수행하지 않지만, Optional Checksum 을 통해 일부 선택적 에러 제어가 가능하다.

 

 

UDP 사용 사례

1. DNS (Domain Name Service)

- Client 는 Server 로부터 짧은 요청을 보내고 빠른 응답을 받아야 하므로 UDP 를 사용한다.

- 1개의 짧은 메시지를 보내기 위해, 연결 과정을 거치게 되면 오버헤드가 많이 발생하므로 연결 과정을 거치지 않는다.

- 또한, 메시지 도착 순서가 중요하지 않으므로 연결 과정을 거치지 않는다.

 

2. Stream Service

실시간성을 요구하는 서비스들은 재전송과 같은 Delay 가 없어야 하므로 UDP 를 사용한다.

데이터가 유실되거나 깨져도 무시하고 다음 데이터를 전송한다. (화질 저하 및 로딩)

 

 

UDP Control-Block Table

PID (Process ID) 에 해당하는 포트 번호가 존재하지 않는다면, OS 에 포트 번호를 요청하여 할당받는다. 

 

 

- Queue Number 는 해당 서비스의 UDP Segement 를 수신한 적이 있음을 나타낸다.

- Queue Number 가 비어있다면, 프로세스는 실행 중이나 아직 UDP Segement 를 수신한 적이 없다는 의미이다. 해당 프로세스와 관련된 UDP Segment 를 수신한다면 값이 설정된다.

- Table 에 존재하지 않는 정보를 가진 UDP Segement 가 수신되면 폐기한다.

 

 

 

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.

혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)

COMMENT