UDP

강민승·2023년 5월 1일
0

네트워크

목록 보기
4/12

[BYM] UDP란?


들어가기 전

UDP란?

UDP(User Datagram Protocol)는 인터넷 프로토콜(IP) 위에서 동작하는 전송 계층 프로토콜 중 하나로, TCP와 함께 가장 많이 사용되는 전송 계층 프로토콜입니다.

UDP는 데이터 전송을 위해 연결 설정 및 해제 과정이 없기 때문에, 데이터 전송이 빠르고 경량화되어 있습니다. 이에 반해, TCP는 데이터 전송에 연결 설정과 해제 과정이 필요하기 때문에 UDP보다 전송 지연이 크고, 전송하는 데이터의 크기가 작을 때는 UDP보다 불리한 면이 있습니다.

UDP는 데이터 전송의 정확성(신뢰성)을 보장하지 않습니다. 즉, 데이터 전송 중 손실이 발생할 수 있고, 전송 순서가 뒤바뀔 수 있습니다. 하지만 UDP는 오버헤드가 적기 때문에, 전송 속도가 빠르고 대용량의 데이터를 전송하기에도 유리합니다.

UDP는 DNS(Domain Name System), DHCP(Dynamic Host Configuration Protocol), 스트리밍(Streaming) 등에서 주로 사용됩니다. DNS는 도메인 이름을 IP 주소로 변환하는데 UDP를 사용하고, DHCP는 IP 주소 할당을 위해 UDP를 사용합니다. 또한, 스트리밍에서는 전송 지연 시간이 중요한 역할을 하기 때문에 UDP를 사용합니다. 스트리밍에서는 데이터 전송 시 일부 데이터 손실이 있더라도 전체적인 데이터 전송 속도가 중요하기 때문입니다.

  • UDP 통신이란?

    • User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다.
    • 비연결형, 신뢰성 없는 전송 프로토콜이다.
    • 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층이다.
    • Transport layer에서 사용하는 프로토콜.
  • TCP와 UDP는 왜 나오게 됐는가?

    1. IP의 역할은 Host to Host (장치 to 장치)만을 지원한다. 장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비안에서 수많은 프로그램들이 통신을 할 경우에는 IP만으로는 한계가 있다.

    2. 또한, IP에서 오류가 발생한다면 ICMP에서 알려준다. 하지만 ICMP는 알려주기만 할 뿐 대처를 못하기 때문에 IP보다 위에서 처리를 해줘야 한다.

    • 1번을 해결하기 위하여 포트 번호가 나오게 됐고, 2번을 해결하기 위해 상위 프로토콜인 TCP와 UDP가 나오게 되었다.
    • *ICMP : 인터넷 제어 메시지 프로토콜로 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰임
  • 그렇다면 TCP와 UDP가 어떻게 오류를 해결하는가?

    • TCP : 데이터의 분실, 중복, 순서가 뒤바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달을 할 수 있도록 해준다.
    • UDP : IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층의 프로토콜이다. TCP와는 다르게 에러가 날 수도 있고, 재전송이나 순서가 뒤바뀔 수도 있어서 이 경우, 어플리케이션에서 처리하는 번거로움이 존재한다.
  • UDP는 왜 사용할까?

    • UDP의 결정적인 장점은 데이터의 신속성이다. 데이터의 처리가 TCP보다 빠르다.
    • 주로 실시간 방송과 온라인 게임에서 사용된다. 네트워크 환경이 안 좋을때, 끊기는 현상을 생각하면 된다.
  • DNS(Domain Name Service)에서 UDP를 사용하는 이유

    • Request의 양이 작음 -> UDP Request에 담길 수 있다.
    • 3 way handshaking으로 연결을 유지할 필요가 없다. (오버헤드 발생)
    • Request에 대한 손실은 Application Layer에서 제어가 가능하다.
    • DNS : port 53번
    • But, TCP를 사용할 때가 있다! 크기가 512(UDP 제한)이 넘을 때, TCP를 사용해야한다.

1. UDP Header

  • - Source port : 시작 포트 - Destination port : 도착지 포트 - Length : 길이 - _Checksum_ : 오류 검출 - 중복 검사의 한 형태로, 오류 정정을 통해 공간이나 시간 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.

  • 이렇게 간단하므로, TCP 보다 용량이 가볍고 송신 속도가 빠르게 작동됨.

  • 그러나 확인 응답을 못하므로, TCP보다 신뢰도가 떨어짐.

  • UDP는 비연결성, TCP는 연결성으로 정의할 수 있음.


DNS과 UDP 통신 프로토콜을 사용함.

DNS는 데이터를 교환하는 경우임

이때, TCP를 사용하게 되면, 데이터를 송신할 때까지 세션 확립을 위한 처리를 하고, 송신한 데이터가 수신되었는지 점검하는 과정이 필요하므로, Protocol overhead가 UDP에 비해서 큼.


DNS는 Application layer protocol임.

모든 Application layer protocol은 TCP, UDP 중 하나의 Transport layer protocol을 사용해야 함.

(TCP는 reliable, UDP는 not reliable임) / DNS는 reliable해야할 것 같은데 왜 UDP를 사용할까?

사용하는 이유

  1. TCP가 3-way handshake를 사용하는 반면, UDP는 connection 을 유지할 필요가 없음.

  2. DNS request는 UDP segment에 꼭 들어갈 정도로 작음.

    DNS query는 single UDP request와 server로부터의 single UDP reply로 구성되어 있음.

  3. UDP는 not reliable이나, reliability는 application layer에 추가될 수 있음.
    (Timeout 추가나, resend 작업을 통해)

DNS는 UDP를 53번 port에서 사용함.


그러나 TCP를 사용하는 경우가 있음.

Zone transfer 을 사용해야하는 경우에는 TCP를 사용해야 함.

(Zone Transfer : DNS 서버 간의 요청을 주고 받을 떄 사용하는 transfer)

만약에 데이터가 512 bytes를 넘거나, 응답을 못받은 경우 TCP로 함.


오버헤드

오버헤드(Overhead)란, 시스템이나 프로그램을 실행하기 위해 추가적으로 필요한 처리나 리소스를 뜻합니다. 즉, 어떤 작업을 수행하기 위해 필요하지 않은 작업이나 처리가 필요한 경우, 그 작업을 수행하는데 드는 비용을 오버헤드라고 합니다.

DNS에서 TCP와 UDP 중 UDP를 사용하는 이유 중 하나가 오버헤드의 감소입니다. TCP는 데이터 전송에 대한 신뢰성을 보장하기 위해 3-way handshake, 연결 설정, 연결 해제 등의 추가적인 과정이 필요합니다. 이러한 과정들은 데이터 전송을 위한 부가적인 오버헤드를 발생시키며, 작은 크기의 데이터 전송에 대해서는 UDP보다 오버헤드가 더 큽니다.

반면에 UDP는 연결 설정이나 해제 과정이 필요하지 않기 때문에, 데이터 전송에 대한 오버헤드가 TCP보다 적습니다. DNS에서는 대부분 작은 양의 데이터를 전송하므로, UDP를 사용하여 오버헤드를 최소화하는 것이 효율적입니다.

protocol overhead

프로토콜 오버헤드(Protocol Overhead)란, 데이터를 전송하기 위한 프로토콜에서 발생하는 추가적인 부분으로, 데이터의 전송량에 비해 실제 데이터를 전송하기 위한 비율이 작아지는 현상을 의미합니다.

프로토콜 오버헤드는 주로 데이터 전송을 위해 사용하는 프로토콜에서 발생합니다. 이를 줄이기 위해서는 프로토콜에서 필요한 최소한의 추가 정보만을 전송해야 하며, 헤더 정보의 크기를 최소화해야 합니다.

예를 들어, TCP 프로토콜에서는 데이터 전송에 대한 신뢰성을 보장하기 위해 헤더에 많은 정보를 포함하고 있습니다. 이러한 정보는 데이터 전송에 대한 신뢰성을 보장하기 위해 필요하지만, 실제 데이터 전송량에 비해 상대적으로 큰 부분을 차지하게 됩니다. 따라서 TCP 프로토콜에서는 프로토콜 오버헤드가 상대적으로 크다고 할 수 있습니다.

UDP 프로토콜은 신뢰성을 보장하지 않지만, 프로토콜 오버헤드가 작아 데이터 전송량에 대한 비율이 높습니다. 이러한 특성은 대량의 작은 데이터를 전송할 때 유리하며, DNS와 같은 서비스에서 많이 사용됩니다.


[ref]

profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글