UDP는 Connectless Transport이다.
- Transport layer protocol이 할 수 있는 최소한의 기능으로만 동작한다.
- Multiplexing, Demultiplexing과 간단한 오류 검사 기능을 제외하면 IP에 아무 것도 추가하지 않는다.
- 수신 Transport layer에서 UDP는 Destination port number를 이용하여 데이터를 해당하는 애플리케이션 프로세스에 전달한다.
- EX) DNS - 간단한 작업으로, 빠른 응답이 필요하기 때문이다.
Q) Connectless인 이유
UDP가 TCP와는 다르게 송수신 transport layer간에 Handshake를 사용하지 않기 때문이다.
Q) Application 개발자가 TCP보다 UDP를 선호하는 이유
-
어떤 데이터를 언제 보낼지에 대해 Application level에서 더욱 정교한 제어가 가능하다.
- TCP는 신뢰적인 데이터 전송때문에 재전송되는 데이터가 많아져 실시간 application에 불리하다.
- TCP는 혼잡 제어 서비스로 인해 Transport layer 송신자가 제한될 수 있다.
-
연결 설정이 없다.
- UDP는 TCP와 다르게 Handshake 과정이 없어 연결을 설정하기 위한 어떠한 지연도 없다.
- DNS가 주로 UDP에서 동작하는 이유
-
연결 상태가 없다.
- 연결 상태를 유지하지 않고, TCP에서는 사용해야하는 파라미터를 따로 기록하지 않는다.
-
작은 패킷 헤더 오버헤드 (추가적인 데이터)
- TCP: Segment마다 20 byte Header
- UDP: Segment마다 8 byte의 Header
- Overhead: 데이터를 전송하기 위해 추가적으로 사용되는 자원이나 데이터량
Transport Layer Protocol의 사용

- 메일, 파일 전송 등: TCP (신뢰적인 데이터 전송 필요)
- 혼잡한 경우에도 동작 해야하는 애플리케이션: UDP
- 보안이 중요시되는 애플리케이션: TCP
UDP segment 구조
UDP 헤더는 2 byte씩 구성된 단 4개의 필드만을 갖는다.

UDP checksum
Segment가 출발지로부터 목적지로 이동했을 때, UDP segment 안의 비트에 대한 변경사항이 있는지 오류 검출을 위한 필드
기본적인 Data Integrity를 보장한다.
-
송신자 UDP: segment 안에 있는 모든 16 bit (2 byte) 워드의 합산을 수행하며, 이때 발생하는 overflow는 wrap around 한다.
-Carry bit을 더한다.
-
위의 결과값의 1의 보수가 checksum field에 삽입된다.

-
그러나 이 방법은 비트가 특정 방법으로 변하는 경우 (A: 01 -> 10 / B: 10 -> 01) 오류를 감지하지 못하는 한계점이 있다.
- Link layer protocol이 오류 검사를 제공한다는 보장이 없기 때문이다.
- 추가적으로, End-end principle에 따르면 하위 레벨에 있는 기능들을 상위 레벨에서 제공하더라도 가치가 있다.
- IP는 어떠한 2계층 프로토콜에서도 동작해야하므로, Transport layer에서 안전장치로써 오류 검사를 제공하는 것이 유용하다.