Network - UDP

이소라·2023년 1월 31일
0

UDP (User Datagram Protocol)

Overview

  • 최소한의 프로토콜 메커니즘을 사용하는 비연결(connectionless) 통신 모델
    • IP 네트워크의 다른 호스트로 datagram을 전송함
    • 통신 채널이나 데이터 경로를 설정할 필요 없음
  • 데이터 진실성(integrity)을 위해 checksum을 제공함
  • datagram의 출발지와 목적지에 다른 함수를 처리하기 위한 port number를 제공함
  • handshaking dialogue가 없음
  • 신뢰 못하는 프로토콜
    • 전달, 순서, 중복 보호에 대한 보장이 없음
  • 에러 확인이나 정확성이 필요하지 않거나, 애플리케이션에서 이러한 처리를 하는 곳에 적합함
    • UDP는 프토코콜 스택에서 이러한 처리의 과중을 피함
  • 시간에 민감한 애플리케이션에서 UDP를 자주 사용함
    • 재전송에 의해 지연되서 패킷을 기다리는 것보다 패킷내리는 것(drop)을 선호함



Attributes

  • UDP는 단순한 메세지 기반인 전송 계층 프로토콜임

  • UDP가 checksum을 통해 헤더와 페이로드의 진실성 확인을 제공하지만, 상위 계층 프로토콜에 메세지 전달 보장을 제공하지 않음

    • UDP 계층은 메세지가 보낸 후에 메세지에 대한 상태를 유지하지 않기 때문임
    • UDP 메세지의 신뢰성을 원한다면, 사용자 애플리케이션 계층에서 전송 신뢰성이 수행되어야 함
  • UDP의 특징들

    • transaction-oriented
    • datagram을 제공함
    • 무상태(stateless)임
      • IPTV와 같은 스트리밍 미디어 애플리케이션처럼 많은 수의 클라이언트들에게 적합함
    • 재전송 지연이 없음
      • Voice over IP, online games과 같이 실시간 스트리밍 프로토콜을 사용하는 실시간 애플리케이션에 적합함
    • multicast를 지원함



Application

  • UDP를 사용하는 인터넷 애플리케이션
    • DNS (Domain Name System), SNMP(Simple Network Management Protocol), RIP (Routing Information Protocol), DHCP (Dynamic Host Configuration Protocol)
  • 음성과 비디오 트래픽은 일반적으로 UDP를 사용하여 전송됨
    • 실시간 비디오/음성 스트리밍 프로토콜은 가끔 손실된 패킷을 처리하도록 고안되어 있음
    • 때때로 손실되는 패킷에 의해 품질이 약간 떨어짐
  • OpenVPN과 같은 VPN 시스템은 UDP를 사용하고, 신뢰성 있는 커넥션을 실행하면서 애플리케이션 계층에서 에러 체크를 함
  • QUIC는 UDP를 기반으로 만들어진 전송 프로토콜임
    • QUIC는 신뢰성 있고 보안된 커넥션을 제공함
    • HTTP/3는 이전 HTTPS와 다르게 QUIC를 사용함
      • TCP와 TLS에 대한 2개의 분리된 handshakes를 사용하기보다 커넥션을 설정하는 하나의 handshake를 사용함
      • 커넥션을 연결하는데 걸리는 시간이 감소함



Comparison of UDP & TCP

AttributesTCP (Transmission Control Protocol)UDP (User Datagram Protocol)
프토코콜연결기반(connection-oriented) 프로토콜단순한 메세지 기반(message-oriented)인 비연결(connectionless) 프토토콜
end to end communications설정해야 함설정하지 않아도 됨
데이터byte stream으로써 읽혀짐datagram으로 패킷이 개별적으로 보내짐
데이터 전송커넥션을 거쳐서 양방향으로 전송됨출발지에서 목적지로 단방향으로 전송됨
데이터 순서순서대로 재정렬되므로 순서를 보장할 수 있음순서를 보장할 수 없음
처리복잡함, 소켓 커넥션을 설정하기 위해 3개의 패킷이 필요함, 신뢰할 수 있음, 혼잡 제어, 흐름 제어를 다룸단순함, 신뢰할 수 없음, 혼잡 제어, 흐름제어를 하지 않음
에러 체크timout, checksum, acknowledgement를 사용하여 error를 예방하고 수정함checksum만을 사용해서 error를 피함, error 수정 불가능함
속도와 효율성지연시간이 김, 많은 리소스를 소모함connection이 빠르게 시작됨, 지연시간이 짧음, 더 적은 리소스를 소모함
castunicastunicast, multicast, broadcast
애플리케이션이미지, 웹페이지, 데이터 파일 등 데이터 진실성이 전송 속도 보다 중요한 애플리케이션에 적합함정확성보다 전송 속도가 중요한 실시간 데이터 전송에 이상적임



참고

0개의 댓글