전 글에서 TCP/IP 모델에 대해 글을 올렸었다. TCP와 UDP는 TCP/IP의 전송계층에서 사용되는 프로토콜이다. 전송계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다.
사용자 데이터그램 규약 데이터를 데이터그램 단위로 처리하는 프로토콜
UDP에 대해서 정리할건데, TCP를 비교하면서 정리를 할 것이다.
TCP | UDP |
---|---|
Connection-oriented protocol (연결지향형 프로토콜) | Connection-less protocol (비 연결지향형 프로토콜) |
Connection by byte stream (바이트 스트림을 통한 연결) | Connection by message stream (메세지 스트림을 통한 연결) |
Congestion/Flow control (혼잡제어, 흐름제어) | No Congestion/Flow control (혼잡제어와 흐름제어 지원X) |
Ordered, Lower speed (순서 보장, 상대적으로 느림) | Not ordered, Higher speed (순서 보장되지 않음, 상대적으로 빠름 |
Reliable data transmission (신뢰성 있는 데이터 전송-안정적) | Unreliable data transmission (데이터 전송 보장 X) |
TCP packet: Segment (세그먼트 TCP 패킷) | UDP packet: Datagram (데이터그램 UDP 패킷) |
HTTP, Email, File transfer에서 사용 | DNS, Broadcasting (도메인, 실시간 동영상 서비스에서 사용) |
응용 계층으로부터 데이터 받은 UDP도 UDP 헤더를 추가한 후에 이를 IP로 보낸다.
필드 | 크기 | 내용 |
---|---|---|
송신자의 포트 번호 | 16 | 데이터를 보내는 애플리케이션의 포트 번호 |
수신자의 포트 번호 | 16 | 데이터를 받을 애플리케이션의 포트 번호 |
데이터의 길이 | 16 | UDP 헤더와 데이터의 총 길이 |
체크섬(Checksum) | 16 | 데이터 오류검사에 사용 |
TCP 헤더와 다르게 UDP 헤더에는 포함된 정보가 부실하다.
UDP는 TCP와 달리 수신자가 데이터를 받는지 마는지 상관이 없기 때문이다. 즉, 신뢰성을 보장해주지 않지만 간단하고 속도가 빠른 것이 특징이다.