User Datagram Protocol(UDP)
transport layser에 속한다.
데이터 전송 시 신뢰성보다 전송속도가 더 중요한 경우에 사용하는 프로토콜이다.
best-effort service이다. 데이터 전송 시 성공 여부는 보장하지 않지만, 최대한 데이터를 전달하려고 하는 방식을 뜻한다.
성공여부를 보장하지 않기 때문에 데이터가 lost되거나 application에서 out-of-order가 발생할 수 있는 문제점이 있다.
connectionless이다. sender는 데이터를 전송하고, reciver는 별다른 과정없이 이를 수신한다.
TCP와 다르게 handshake과정이 없고, 들어오는 순서대로 독립적으로 전달된다.
이 덕분에 전송속도가 빠르지만 신뢰성이 낮을 수 있다.
송신한 Packet의 순서를 보장하지 않는다. 그래서 패킷이 지연되거나 빠진 채 도착할 수 있고 데이터의 흐름의 순서가 유지되지 않을 수 있다.
Congestion control이 없다.
UDP는 신뢰성보다 전송속도가 중요해서 streaming multimedia apps에 많이 사용된다.
DNS에서 TCP를 사용할 시 송신한 데이터가 수신되었는지 확인하는 과정이 필요하여 Overhead가 크다. 그래서 DNS는 UDP를 사용한다.
UDP segment format

source/dest port: 송수신측 port 번호이다.
length: header와 데이터를 합한 데이터그램의 전체 길이다.
checksum: 데이터 오류 검사에 사용한다.
UDP Checksum
[참고] Computer Networking A Top-Down Approach EIGHTHEDITION/Kurose.Ross/Pearson