IT 지식/네트워크(Network)

컴퓨터 네트워크 - UDP

나아가는중 2021. 12. 1. 21:10
반응형

UDP (User Datagram Protocol)

UDP는 복잡한 기능들을 제거한 단순한 프로토콜이다. 송신 측과 수신 측은 handshaking(연결)을 하지 않는 연결이 없는(connectionless) 통신 방법이다. 연결이 없기 때문에 UDP 세그먼트는 통신 중에 손실될 수 있으며, 전송 순서대로 도착하는 것을 보장하지 않는다. 

 

TCP와 비교했을 때 UDP는 손실 발생, 순서 보장하지 않는 단점이 있는데 왜 UDP를 사용하는지 의문이 들 수 있다. UDP는 연결을 하지 않기 때문에 연결에서 발생하는 지연이 없으며, 간단하며, 작은 세그먼트 헤더를 갖는 장점이 있다. 혼잡 제어(congestion control)를 하지 않아 빠르게 저세그먼트를 보낼 수 있는데, 이는 장점이자 단점이다.

 

UDP는 주로 멀티미디어 애플리케이션을 스트리밍 하는 경우에 사용된다. 손실이 발생해도 크게 상관이 없으며, 혼잡 제어, 복구 등이 없어 빠른 장점 때문에 이와 같은 경우에 UDP가 사용된다. 이 밖에도 DNS, SNMP에서 사용된다. 만약 TCP의 혼잡 제어 메커니즘은 원하지 않으나 신뢰성 있는 전송을 원한다면 애플리케이션층에서 Ack와 재전송 기능을 갖도록 하여 사용된다. 스트리밍 애플리케이션에서 이러한 방법으로 빈번히 사용된다.

 

UDP segment format

UDP segment는 32bits 길이를 가진다. 헤더에는 4개의 필드만이 존재하는데, 각각 16bit씩 소스 포트 번호, 목적지 포트 번호, length와 checksum이 있다.

 

length는 헤더와 애플리케이션 데이터(message = payload)의 길이를 byte단위로 표시한다. 애플리케이션 데이터는 애플리케이션층에서 보낸 데이터이다.

 

checksum은 에러 체크의 용도로 사용된다. 헤더와 payload 데이터를 16비트씩 모두 더한 다음 1의 보수를 취한다. 이렇게 구해진 값을 송신 측은 UDP checksum 필드에 넣어 보내고 수신 측은 다시 같은 방법으로 checksum을 계산하고 송신 측에서 보낸 checksum과 비교하여 에러 체크를 한다. 송신 측과 수신 측 사이의 네트워크 장비가 모든 에러 체크를 한다고 장담할 수 없어 종단 단말에서 수행한다. 하지만 에러가 발생하여도 UDP에서는 에러 복구는 하지 않는다.

 

 

반응형