데이터의 신뢰성이 없다
의미있는 서버를 구축하기 위해서는 일일이 패킷을 관리해줘야한다
비연결형 서비스로 데이터그램 방식을 제공
연결을 설정하고 해제하는 hand-shaking 과정이 없다
UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다
TCP보다 신뢰성이 낮지만 속도가 빠르다
서로 다른 경로로 독립적으로 데이터를 전송하지만 패킷에 순서를 부여해서 재조립하거나 흐름 제어 및 혼잡 제어를 처리해주지 않기에 속도가 빠름
패킷 오버헤드가 적어 네트워크에 부하가 적다
신뢰성보다 연속성이 중요한 실시간 서비스에 주로 사용
UDP에는 연결 자체가 없어서 connect 함수가 불필요하며, 서버 소켓과 클라이언트 소켓의 구분이 없다
UDP 소켓을 통해서 자신의 포트를 확인하기 전까지 데이터가 왔는지 알 수 없다
소켓 대신 IP를 기반으로 데이터를 전송
서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결 가능
데이터그램(메세지) 단위로 전송되며 크기는 65535 바이트로, 크기가 초과하면 잘라서 보낸다
흐름제어가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다
파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시되는 경우에 사용
송신자의 포트 번호
크기 : 16
데이터를 보내는 애플리케이션의 포트 번호
수신자의 포트 번호
크기 : 16
데이터를 받을 애플리케이션의 포트 번호
데이터의 길이
크기 : 16
UDP 헤더와 데이터의 총 길이
체크섬
크기 : 16
데이터 오류 검사에 사용
포트 번호를 이용하여 주소를 지정
데이터 오류 검사를 위한 체크섬 존재
연결형 / 비연결형
데이터의 경계를 구분하지 않음 (Byte-Stream) / 데이터의 경계를 구분함 (Datagram)
신뢰성있는 데이터 전송 (재전송 가능) / 신뢰성 없는 데이터 전송
1대1 통신 (Unicast) / 1대1, 1대다 (Broadcast), 다대다 (Multicast)