UDP(User Datagram Protocol)
네트워크 계층들중 전송계층에서 사용하는 프로토콜로써 데이터를 보내기위해 사용합니다.
데이터를 데이터 그램 단위로 처리하는 프로토콜
UDP는 비연결형 프로토콜입니다. 즉 연결을 위해 TCP처럼 할당되는 논리적인 경로가 없습니다.
그렇기 때문에 각각의 패킷은 다른 경로로 전송되고 각각의 패킷은 독립적인 관계를 지니게되는데 이렇게 데이터를 서로 다른경로로 독립적으로 처리하게되는 프로토콜입니다.
UDP 특징
- 비 연결형 서비스로 데이터그램 방식을 제공합니다.
- 정보를 주고 받을때 정보를 보내거나 받는다는 신호 절차를 거치지 않습니다.
- 신뢰성이 낮지만 TCP보다 속도가 빠릅니다.
UDP는 비 연결형 서비스이기 때문에 연결을 설정하고 해제하는 과정이 존재하지 않습니다. 서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 흐름제어또는 혼잡제어같은 기능을 처리하지 않기 때문에 TCP보다 속도가 빠릅니다.
UDP헤더에는 목적지 주소, 데이터 순서, Checksum(데이터 오류 체크)과 실데이터만 포함되는 간단한 구조입니다. 확인 응답같은 것들이 없기때문에 TCP 보다 속도가 빠릅니다.
또한 그로인하여 네트워크의 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송을 보장하지 않습니다.
그렇기 때문에 신뢰성 보다는 연속성이 중요한 서비스에 주로 사용됩니다.
하지만 UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있습니다. 그래서 HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 합니다. 즉, UDP 자체는 신뢰성을 보장하지 않지만, 추가적인 정의를 통해 신뢰성을 보장받을 수 있습니다.
DNS는 보통 UDP를 사용합니다, 그외 NFS, SNMP, RIP등
그 이유로는 TCP의 경우 데이터 전송 시작전에 3-way-handshaking 과정이 있는 반면 UDP는 연결설정에 드는 비용이 없습니다. DNS는 신뢰성보다 속도가 중요한 서비스이기 때문에 TCP보다 UDP가 더 적합합니다.
또한 UDP는 512byte를 넘어가지 않는 패킷만 전송이 가능하고 오버헤드가 없어 속도가 빠른데 DNS가 전송하는 데이터 패킷 사이즈가 작으므로 UDP가 유리합니다.
또한 TCP는 호스트간 연결상태를 유지하지만 UDP는 어떤 정보도 기록하지 않으며 유지할 필요도 없습니다. 따라서 DNS서버는 TCP보다 많은 클라이언트를 수용할수 있고 연결상태를 유지하지 않고 정보 기록을 최소화하는 UDP를 선택합니다.
UDP 서버의 특징
- UDP에는 연결 자체가 없어서 서버 소켓과 클라이언트 소켓의 구분이 없습니다.
- 흐름제어(flow Control)가 없어 패킷이 제대로 전송 되었는지 오류가 없는지 확인할수 없습니다.
- 파일 전송과 같은 신뢰성이 필요한 서비스 보다 성능이 중요한 경우에 사용됩니다.
- 예 ) 실시간 스트리밍 서비스
- 데이터그램 방식으로 전송되며 실질적인 크기는 65527 (65535 - 8(UDP 헤더 길이))byte로 크기가 초과한다면 잘라서 보내게 됩니다.
- 서버와 클라이언트는 1 : 1 , 1 : N, N : M 등으로 연결될수 있습니다.
UDP와 TCP의 비교
'CS > 네트워크' 카테고리의 다른 글
Blocking,Non-blocking & Synchronous,Asynchronous (0) | 2022.09.20 |
---|---|
TLS/SSL HandShake (0) | 2022.09.20 |
HTTP & HTTPS (0) | 2022.09.20 |
대칭키 VS 공개키 (0) | 2022.09.20 |
TCP/IP, 흐름제어 혼잡제어 (0) | 2022.09.20 |