사용자 데이터그램 프로토콜
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
사용자 데이터그램 프로토콜(UDP)은 데이터를 주고받는 양단 간 연결 설정 없이, 수신자가 데이터를 받을 준비가 되었는지 확인하는 단계를 거치지 않고 단방향으로 정보를 전송하는 프로토콜이다. TCP와 비교하여 신뢰성, 순서 정렬, 부하 측면에서 차이를 보이며, 일반적으로 속도가 빠르고 오버헤드가 적다. UDP는 포트를 사용하여 애플리케이션 간 통신을 가능하게 하며, 체크섬을 통해 데이터그램의 완전성을 검사한다. DNS, SNMP, RIP, DHCP 등 다양한 인터넷 응용 분야에서 사용되며, 실시간 오디오 및 비디오 스트리밍, VPN, QUIC 등에도 활용된다. UDP는 신뢰성과 혼잡 제어를 제공하지 않으며, 필요한 경우 애플리케이션 수준에서 구현해야 한다.
더 읽어볼만한 페이지
- 전송 계층 프로토콜 - 전송 제어 프로토콜
전송 제어 프로토콜(TCP)은 인터넷 모델의 전송 계층에서 신뢰성 있는 통신을 제공하며 순서 보장, 오류 검출, 흐름 및 혼잡 제어 기능을 수행하는 프로토콜로, 웹 브라우징 등 다양한 인터넷 응용 프로그램에서 사용되고 TCP/IP 모델의 핵심이다. - 전송 계층 프로토콜 - 점대점 터널링 프로토콜
점대점 터널링 프로토콜(PPTP)은 VPN 구축을 위해 개발되었으나 보안 취약점으로 인해 사용이 권장되지 않으며 대한민국에서는 정부 및 공공기관에서 사용이 금지된 프로토콜이다. - 1980년 도입 - 농심 포테토칩
농심 포테토칩은 1980년 농심에서 처음 생산된 감자칩으로, '크레오파트라 포테토칩'에서 시작하여 현재의 이름으로 정착되었으며, 오리온 포카칩과 경쟁하고 수미칩을 자매품으로 두고 있고, 오리지널, 사워크림 어니언, 콘치즈맛 등 다양한 맛이 출시되었으며, 과거에는 가루비와의 기술 제휴를 통해 김치맛, 피자맛 등 단종된 제품도 있다. - 1980년 도입 - 포카리 스웨트
포카리 스웨트는 오츠카 제약에서 개발한 이온 음료로, 인체 체액과 유사한 이온 농도로 수분 보충에 효과적이며, 1987년 대한민국에 소개된 후 스포츠 마케팅과 상쾌한 이미지 구축을 통해 판매량을 늘려왔다. - 인터넷 표준 - DNSSEC
DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다. - 인터넷 표준 - IPv6
IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
사용자 데이터그램 프로토콜 |
---|
2. UDP와 TCP 비교
전송 제어 프로토콜(TCP)은 데이터를 주고받을 양단 간에 먼저 연결을 설정하고 설정된 연결을 통해 양방향으로 데이터를 전송하지만, 사용자 데이터그램 프로토콜(UDP)은 연결을 설정하지 않고 수신자가 데이터를 받을 준비를 확인하는 단계를 거치지 않고 단방향으로 정보를 전송한다.[17] 이러한 특성으로 인해 UDP는 TCP에 비해 지연 시간이 짧고 오버헤드가 적지만, 데이터의 신뢰성과 순서를 보장하지 않는다.
다음 표는 IP, UDP/IP, TCP/IP가 제공하는 기능을 비교한 것이다.
기능 | IP | UDP/IP | TCP/IP |
---|---|---|---|
호스트 간 통신 (주소 사용) | ✔ | ✔ | ✔ |
애플리케이션 간 통신 (포트 사용) | - | ✔ | ✔ |
패킷 트랜잭션 | △[17] | ✔ | ✔ |
바이트 스트림 전송 | - | - | ✔ |
흐름 제어 | - | - | ✔ |
혼잡 제어 | - | - | ✔ |
UDP/IP는 TCP/IP보다 적은 기능만을 제공한다. UDP는 단일 패킷의 도달 보장이나 여러 패킷에 걸친 흐름 제어·순서 제어를 지원하지 않으므로(데이터그램 모델), '신뢰할 수 없는 데이터그램 프로토콜'(Unreliable Datagram Protocol)이라고 불리기도 한다.[19]
2. 1. 신뢰성
전송 제어 프로토콜(TCP)은 메시지 확인, 재전송 및 시간 초과 기능을 통해 데이터 전송의 신뢰성을 보장한다. 데이터가 전송 과정에서 손실되면 다시 전송되며, 여러 번 시간 초과가 발생하지 않는 이상 데이터 손실이 발생하지 않는다.[17] 반면, 사용자 데이터그램 프로토콜(UDP)는 메시지 수신 확인을 하지 않으므로, 메시지가 목적지에 도달하는 것을 보장할 수 없다. 전송 과정에서 데이터가 손실될 수 있으며, 이에 대한 확인, 재전송, 시간 초과 개념이 없다.[19]TCP | UDP | |
---|---|---|
신뢰성 | ✔ | - |
2. 2. 순서 정렬
전송 제어 프로토콜(TCP)은 메시지가 보내진 순서를 보장하기 위해 재조립하지만, 사용자 데이터그램 프로토콜(UDP)은 메시지 도착 순서를 예측할 수 없다.[17] UDP에서는 두 개의 메시지가 동일한 수신자에게 전송될 경우, 메시지가 도착하는 순서를 보장할 수 없다.[19]2. 3. 부하
UDP는 전송 제어 프로토콜(TCP)보다 일반적으로 속도가 빠르고 오버헤드가 적다.[17] 이는 UDP가 연결을 설정하지 않고, 수신자가 데이터를 받을 준비가 되었는지 확인하는 절차 없이 단방향으로 정보를 전송하기 때문이다. TCP는 신뢰성을 보장하기 위해 메시지 수신 확인, 재전송, 순서 정렬 등의 기능을 제공하지만, UDP는 이러한 기능이 없어 '가벼운 프로토콜'로 간주된다.[18]3. 포트
애플리케이션은 데이터그램 소켓을 사용하여 호스트 간 통신을 설정한다. 애플리케이션은 소켓을 데이터 전송의 종단점에 바인딩하는데, 이는 IP 주소와 포트의 조합이다. 이러한 방식으로 UDP는 애플리케이션 다중화를 제공한다. 포트는 포트 번호로 식별되는 소프트웨어 구조로, 16비트 정수 값이며, 0에서 65535 사이의 값을 가진다. 포트 0은 예약되어 있지만, 전송 프로세스가 응답 메시지를 예상하지 않는 경우 허용 가능한 소스 포트 값이다.
UDP는 인터넷 프로토콜 위에서 사용되는 프로토콜이며[16], IP와 함께 UDP/IP 스택으로 기능한다. UDP는 포트 기능을 제공함으로써 1 호스트 내 다중 애플리케이션으로의 통신 분배를 가능하게 한다. UDP 모듈은 소켓을 통해 프로그램에서 접근하는 경우가 많다.
3. 1. 포트 번호 할당
인터넷 할당 번호 관리국(IANA)은 포트 번호를 세 가지 범위로 나누었다.[6] 0~1023번 포트는 일반적으로 잘 알려진 서비스에 사용된다. 유닉스 계열 운영 체제에서 이러한 포트 중 하나를 사용하려면 슈퍼유저 운영 권한이 필요하다. 1024~49151번 포트는 IANA에 등록된 서비스에 사용되는 등록된 포트이다. 49152~65535번 포트는 특정 서비스에 공식적으로 지정되지 않고 모든 목적에 사용될 수 있는 동적 포트이다. 이들은 또한 호스트에서 실행되는 소프트웨어가 필요에 따라 통신 종단점을 동적으로 생성하는 데 사용할 수 있는 임시 포트로도 사용될 수 있다.[6]3. 2. 임시 포트
인터넷 할당 번호 관리국(IANA)은 포트 번호를 세 개의 범위로 나누었다.[6] 이 중 49152~65535번 포트는 특정 서비스에 공식적으로 지정되지 않고 모든 목적에 사용될 수 있는 동적 포트이다. 동적 포트는 호스트에서 실행되는 소프트웨어가 필요에 따라 통신 종단점을 동적으로 생성하는 데 사용할 수 있는 임시 포트로도 사용된다.[6] 클라이언트는 통신 시 임시 포트를 사용하는 경우가 많다.4. 패킷 구조
UDP 패킷은 UDP 헤더와 데이터 부분으로 구성된다.[3]
UDP 데이터그램은 ''헤더''와 ''데이터'' 섹션(응용 프로그램의 페이로드 데이터)으로 구성된다.[3]
오프셋(비트) | 0 – 15 | 16 – 31 |
---|---|---|
0 | 출발지 포트 | 도착지 포트 |
32 | 길이 | 체크섬 |
64+ | 데이터 |
UDP 헤더는 4개의 필드로 구성되며, 각 필드는 2바이트(16비트)이다.[40][15] IPv4에서는 ''체크섬'' 및 ''출발지 포트'' 필드 사용이 선택 사항이다. IPv6에서는 ''출발지 포트'' 필드만 선택 사항이다. 사용하지 않는 경우, 이러한 필드는 0으로 설정해야 한다.[3]
4. 1. UDP 헤더
UDP 헤더는 출발지 포트, 도착지 포트, 길이, 체크섬의 네 가지 필드로 구성된다.[40][3] 각 필드는 2바이트(16비트) 크기를 가진다.오프셋 (비트) | 0–15 | 16–31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 출발지 포트 | 도착지 포트 | ||||||||||||||||||||||||||||||
32 | 길이 | 체크섬 | ||||||||||||||||||||||||||||||
64+ | 데이터 |
- 출발지 포트: 송신측 포트를 나타내며, IPv4에서는 선택 사항이다. 사용하지 않을 경우 0으로 설정한다.
- 도착지 포트: 수신측 포트를 나타내며, 필수 항목이다.
- 길이: UDP 헤더와 데이터를 포함한 전체 UDP 데이터그램의 길이를 옥텟 단위로 나타낸다. 최소 길이는 헤더 크기인 8바이트이다.
- 체크섬: 헤더와 데이터의 오류를 검사하는 데 사용되며, IPv4에서는 선택 사항이지만 IPv6에서는 대부분 필수이다.
UDP는 호스트 내 통신 분배를 위한 포트 기능과 데이터그램 무결성 검사를 위한 체크섬 기능을 제공한다.[20]
4. 1. 1. 출발지 포트
이 필드는 송신 측 프로세스의 포트를 나타내며, 응답이 필요할 경우 응답 대상 포트로 간주된다.[6] 송신 측이 클라이언트인 경우, 이 포트 번호는 에페메럴 포트일 가능성이 높다. 반면 송신 측이 서버인 경우에는 0에서 1023 사이의 웰 known 포트 번호일 가능성이 높다.[6] 이 필드는 선택 사항이며, 사용하지 않을 경우 0으로 채워진다.[26][27] 추가 정보가 없으면, 이 번호가 반신(返信) 대상 포트가 된다.[28]4. 1. 2. 도착지 포트
이 필드는 수신 측 프로세스의 포트를 식별하며 필수이다. 출발지 포트 번호와 유사하게, 클라이언트가 목적지 호스트인 경우 포트 번호는 임시 포트 번호일 가능성이 높으며, 목적지 호스트가 서버인 경우 포트 번호는 웰 known 포트 번호일 가능성이 높다.[6]4. 1. 3. 길이
이 필드는 옥텟 단위로 UDP 데이터그램(헤더 및 데이터 포함)의 길이를 나타낸다.[7] 최소 길이는 헤더의 길이인 8바이트이다.[30] 필드 크기로 인해 UDP 데이터그램의 이론상 최대 길이는 65,535바이트(8바이트 헤더 + 65,527바이트 데이터)이다. 그러나 IPv4 프로토콜에서는 실제 제한이 65,507바이트(65,535바이트 - 8바이트 UDP 헤더 - 20바이트 IP 헤더)로 적용된다.[14]IPv6 점보그램을 사용하면 65,535바이트보다 큰 UDP 데이터그램을 처리할 수 있다.[31] UDP 헤더와 데이터의 길이가 65,535보다 크면 길이 필드는 0으로 설정된다. IPv6 옵션 헤더를 통해 최대 4,294,967,295바이트(232 - 1)까지 지정 가능하며, 헤더 8바이트를 제외하면 최대 4,294,967,287바이트의 데이터를 처리할 수 있다.
4. 1. 4. 체크섬
체크섬(checksum) 필드는 헤더 및 데이터의 오류 검사에 사용된다. 이 필드는 IPv4에서는 선택 사항이지만, IPv6에서는 대부분의 경우 필수이다.[38][35] 사용하지 않을 때는 0으로 채운다.[34]체크섬 계산법은 다음과 같이 정의되어 있다.
IP 헤더에서 생성된 의사 헤더와 UDP 헤더, 그리고 데이터를 길이가 2옥텟의 배수가 되도록 (필요하다면) 값이 0인 옥텟으로 패딩한 후, 각 2옥텟의 1의 보수 합계의 1의 보수의 하위 16비트를 체크섬으로 한다.[36]
즉, 모든 16비트 워드를 1의 보수 연산으로 더한다. 그 합계를 1의 보수로 하면 UDP 체크섬 필드의 값이 된다.
체크섬 계산 결과가 0이 되는 경우(16비트 전부가 0), 체크섬을 생략하는 경우와 구별하기 위해 그 1의 보수(모든 비트가 1)를 설정한다.
IPv4와 IPv6에서는 체크섬 계산에 사용하는 데이터에 차이가 있다.
4. 2. 체크섬 계산
체크섬은 IETF RFC 768에 정의되어 있으며, 효율적인 계산 방법은 IETF RFC 1071에 설명되어 있다.체크섬은 IP 의사 헤더, UDP 헤더 및 데이터의 1의 보수 합계에 의사 헤더의 16비트 1의 보수이며, 2옥텟의 배수가 되도록 마지막에 0 옥텟으로 채워진다.[8]
간단히 설명하면, 모든 16비트 단어를 1의 보수 연산을 사용하여 더한다. 각 덧셈에서 17번째 비트(캐리 아웃)가 발생하면, 이 비트를 실행 중인 합계의 맨 아래 비트에 다시 더한다. 마지막으로, 합계의 1의 보수를 취하여 UDP 체크섬 필드의 값을 얻는다.
만약 체크섬 계산 결과가 0(모든 16비트가 0)이 되면, 모두 1(1의 보수)로 전송한다. 이는 체크섬이 계산되지 않았음을 나타내는 0 값 체크섬과 구별하기 위함이다. 1의 보수 연산에서는 모든 0과 모든 1이 0으로 취급되므로, 수신 측에서는 별도의 처리가 필요하지 않다.
IPv4와 IPv6는 체크섬 계산에 사용되는 의사 헤더가 다르며, IPv6에서는 체크섬이 필수 사항이다.[9] 특정 조건에서 IPv6을 사용하는 UDP 애플리케이션은 터널 프로토콜과 함께 0 UDP 제로 체크섬 모드를 사용할 수 있다.[10]
'''체크섬''' ()은 "IP 의사 헤더 + UDP 헤더 + 데이터 + 패딩"에 대한 체크섬이다.[32]
UDP 헤더의 체크섬은 헤더와 데이터의 오류를 검출하는 데 사용된다.[33] IPv4에서는 선택 사항이지만,[34] IPv6에서는 필수이다.[38],[35]
4. 2. 1. IPv4 의사 헤더
IPv4에서 체크섬 계산에 사용되는 가상 헤더이다. 이 가상 헤더는 IP 패킷 전송에 사용되는 실제 IPv4 헤더가 아니라, 체크섬 계산에만 사용된다. UDP 체크섬 계산은 IPv4에서 선택 사항이며, 체크섬을 사용하지 않는 경우 값은 0으로 설정된다.필드 | 길이 (비트) | 설명 |
---|---|---|
출발지 주소 | 32 | IPv4 헤더의 출발지 주소. |
목적지 주소 | 32 | IPv4 헤더의 목적지 주소. |
0 | 8 | 모두 0. |
프로토콜 | 8 | UDP의 프로토콜 값: 17 (또는 0x11). |
UDP 길이 | 16 | UDP 헤더와 데이터의 길이 (옥텟 단위). |
체크섬은 위에 명시된 필드들에 대해 계산된다.
4. 2. 2. IPv6 의사 헤더
IPv6에서 체크섬 계산에 사용되는 가상 헤더이다.체크섬 계산에는 실제 IPv6 헤더를 모방한 의사 헤더가 사용된다. 의사 헤더의 구성 요소는 다음과 같다.
- '''출발지 주소''' (128 비트): IPv6 헤더의 주소.
- '''목적지 주소''' (128 비트): 최종 목적지 주소. IPv6 패킷에 라우팅 헤더가 없으면 IPv6 헤더의 목적지 주소를 사용하고, 있으면 출발 노드에서는 라우팅 헤더의 마지막 요소에 있는 주소를, 수신 노드에서는 IPv6 헤더의 목적지 주소를 사용한다.
- '''UDP 길이''' (32 비트): UDP 헤더와 데이터의 길이 (옥텟 단위).
- '''영(0)''' (24 비트): 모두 0.
- '''다음 헤더''' (8 비트): UDP의 전송 계층 프로토콜 값: 17.
체크섬은 "IP 의사 헤더 + 사용자 데이터그램 + 패딩"에 대해 계산된다[32]。 UDP 헤더의 체크섬은 헤더와 데이터의 오류 검출에 사용되는 필수 필드이다[33]。[38]。[35]
체크섬 계산법은 RFC 768에 정의되어 있다. IP 헤더에서 생성된 의사 헤더와 UDP 헤더, 그리고 데이터를 2옥텟의 배수가 되도록 (필요시) 0으로 패딩한 후, 각 2옥텟의 1의 보수 합계의 1의 보수의 하위 16비트를 체크섬으로 한다[36]。
즉, 모든 16비트 워드를 1의 보수 연산으로 더하고, 그 합계를 1의 보수로 변환하면 UDP 체크섬 필드의 값이 된다.
계산 결과가 0이 되면 (16비트 모두 0), 모두 1로 설정한다. 이는 체크섬을 생략하는 경우(모두 0)와 구별하기 위함이다.
IPv4와 IPv6에서는 체크섬 계산에 사용하는 데이터가 다르다.
5. 기능
UDP는 IETF RFC 768에 문서화된 간단한 메시지 지향 전송 계층 프로토콜이다. UDP는 헤더와 페이로드의 무결성 검증(체크섬)을 제공하지만,[4] 메시지 전달에 대한 보장을 상위 계층 프로토콜에 제공하지 않으며, UDP 계층은 전송된 UDP 메시지의 상태를 유지하지 않는다. 이러한 이유로 UDP는 때때로 ''신뢰할 수 없는 데이터그램 프로토콜''이라고 불린다.[5]
UDP는 인터넷 프로토콜 위에서 사용되는 프로토콜이며[16], IP와 함께 UDP/IP 스택으로 기능한다. UDP/IP는 "네트워크의 네트워크에서의 트랜잭션 지향 애플리케이션 간 데이터그램 전송[13]"을 실현한다. UDP는 이를 최소한의 프로토콜로 실현하도록 의도되었기 때문에[18], UDP/IP는 TCP/IP보다 적은 기능만을 제공한다. 단일 패킷의 도달 보장이나 여러 패킷에 걸친 흐름 제어·순서 제어는 지원하지 않는다(데이터그램 모델).
UDP는 다음 두 가지 기능을 제공한다.
- 호스트 내 통신 분배: 포트
- 데이터그램 완전성 검사: 체크섬
IP는 호스트 간 통신을 가능하게 하지만, 그 자체로는 호스트로의 모든 신호를 하나의 애플리케이션만 수신한다. UDP는 포트 기능을 제공함으로써 1 호스트 내 다중 애플리케이션으로의 통신 분배를 가능하게 한다. IP는 헤더 체크섬을 통한 목적지 오류 감지를 가능하게 하지만, 페이로드의 파괴는 감지할 수 없다. UDP는 IP 주소, 포트, 페이로드에 기반한 체크섬을 제공함으로써 단일 데이터그램의 라우팅 오류 및 데이터 파괴를 (100%는 아니지만) 감지할 수 있다.[20]
UDP는 애플리케이션 간 통신[21]과 패킷 트랜잭션(all-or-nothing 통신[22])을 제공한다.[23][24]
6. 응용 분야
UDP는 특정 애플리케이션에 적합한 여러 속성을 가지고 있다.
- 도메인 네임 시스템(DNS)이나 네트워크 시간 프로토콜(NTP)과 같이 간단한 쿼리-응답 프로토콜에 적합한 ''트랜잭션 지향적''이다. DNS는 1개의 쿼리에 빠르게 1개의 응답 패킷을 반환하기만 하므로 UDP를 사용한다.
- IP 터널링 또는 원격 프로시저 호출 및 네트워크 파일 시스템과 같은 다른 프로토콜을 모델링하는 데 적합한 ''데이터그램''을 제공한다.
- DHCP 및 TFTP와 같이 전체 프로토콜 스택 없이 부트스트래핑 또는 기타 목적에 적합하다.
- IPTV와 같은 스트리밍 미디어 애플리케이션과 같이 매우 많은 수의 클라이언트에 적합한 ''무상태''이다.
- OpenVPN과 같은 일부 VPN 시스템은 UDP를 사용하여 신뢰할 수 있는 연결을 구현하면서 애플리케이션 수준에서 오류 검사를 수행할 수 있다.
QUIC는 UDP를 기반으로 구축된 전송 프로토콜이다. QUIC는 안정적이고 안전한 연결을 제공한다. HTTP/3는 신뢰성과 보안을 보장하기 위해 TCP와 TLS의 조합을 사용하는 이전 버전의 HTTPS와 달리 QUIC를 사용한다. 이는 HTTP/3가 TCP와 TLS에 대해 두 번의 개별 핸드셰이크를 갖는 대신 단일 핸드셰이크를 사용하여 연결을 설정한다는 것을 의미하며, 이는 전체 연결 설정 시간이 단축됨을 의미한다.[12]
UDP를 사용하는 인터넷의 중요한 애플리케이션은 여러 가지가 있으며, 도메인 네임 시스템(DNS), 단순 네트워크 관리 프로토콜(SNMP), 라우팅 정보 프로토콜(RIP),[3] 동적 호스트 구성 프로토콜(DHCP), 네트워크 시간 프로토콜(NTP) 등이 그 예시이다.
UDP 위에 신뢰성 보장 프로토콜을 얹어서 이용하는 경우도 존재한다. TFTP 등의 애플리케이션에서는 애플리케이션 계층에서 필요에 따라 기본적인 신뢰성 기구를 부여하고 있다.
6. 1. 실시간 응용 프로그램
VoIP, 온라인 게임, 실시간 스트리밍 프로토콜을 사용하는 많은 프로토콜과 같은 실시간 애플리케이션은 ''재전송 지연의 부재''라는 UDP의 속성이 적합하기 때문에 UDP를 사용한다.[5] 음성 및 비디오 트래픽은 일반적으로 UDP를 사용하여 전송된다. 실시간 비디오 및 오디오 스트리밍 프로토콜은 가끔 발생하는 패킷 손실을 처리하도록 설계되었기 때문에 손실된 패킷을 재전송하는 경우와 비교하여 품질 저하가 미미하게 발생한다.[11] 스트리밍, 게이밍, VoIP에서 패킷 손실은 약간의 품질 저하를 일으키지만, 재전송 대기는 시스템을 정지시켜 버린다.[3]6. 2. 멀티캐스트/브로드캐스트 통신
UDP는 멀티캐스트를 지원하여, 서비스 검색, 정밀 시간 프로토콜, 라우팅 정보 프로토콜과 같이 공유 정보를 필요로 하는 브로드캐스트 통신에 적합하다.[5]7. 신뢰성 및 혼잡 제어
UDP는 신뢰성 및 혼잡 제어를 자체적으로 제공하지 않는다. 따라서 이러한 기능이 필요한 경우, 애플리케이션 수준에서 별도로 구현해야 한다.
UDP는 도메인 네임 시스템(DNS), 네트워크 시간 프로토콜(NTP)과 같이 간단한 질의-응답 프로토콜이나, IP 터널링, 원격 프로시저 호출(RPC), 네트워크 파일 시스템(NFS)과 같이 다른 프로토콜을 모델링하는 데 적합하다. 또한, DHCP, TFTP와 같이 전체 프로토콜 스택 없이 부트스트래핑이 필요한 경우에도 유용하다. IPTV와 같은 스트리밍 미디어 애플리케이션이나, VoIP, 온라인 게임, 실시간 스트리밍 프로토콜을 사용하는 프로토콜과 같이 실시간 애플리케이션에도 적합하다.
UDP를 사용하는 애플리케이션은 패킷 손실, 재정렬, 오류, 중복 등이 발생할 수 있다. 따라서 메시지 수신 확인 등 필요한 핸드셰이킹은 최종 사용자 애플리케이션에서 제공해야 한다. 높은 수준의 신뢰성이 필요한 경우에는 전송 제어 프로토콜(TCP)과 같은 프로토콜을 대신 사용할 수 있다.
7. 1. 신뢰성 메커니즘
UDP는 헤더와 페이로드의 무결성을 검증하지만,[4] 메시지 전달을 보장하지 않으며, 전송된 메시지 상태를 유지하지 않는다.[5] 이러한 이유로 UDP는 '신뢰할 수 없는 데이터그램 프로토콜'이라고도 불린다.[5] 전송 신뢰성이 필요한 경우 사용자 애플리케이션에서 구현해야 한다.TFTP와 같은 일부 애플리케이션은 필요에 따라 애플리케이션 계층에 기본적인 신뢰성 메커니즘을 추가할 수 있다.[6]
7. 2. 혼잡 제어 부재
UDP는 설계상 혼잡 제어를 제공하지 않는다. 이 때문에 네트워크 전체에 부하가 걸리는 경우가 있다.[39]대역폭의 큰 부분을 소비하여 혼잡을 일으키기 쉬운 UDP 애플리케이션은 인터넷의 안정성을 위협할 가능성이 있으며, 실제로 대역폭을 대폭 점유하는 사태가 발생하고 있다. 제어할 수 없는 UDP 트래픽으로 인한 혼잡 붕괴 가능성을 낮추기 위한 네트워크 기구가 제안되어 왔다. 현재로서는 라우터 등의 네트워크 장비에서의 패킷 큐잉이나 패킷 드로핑이 과도한 UDP 트래픽을 늦추는 유일한 수단이다. 데이터그램 혼잡 제어 프로토콜(DCCP)은 스트리밍 등 고전송 속도의 UDP 스트림에 대해 TCP와 같은 혼잡 제어를 추가하여 이 문제를 부분적으로 해결하기 위해 설계된 프로토콜이다.[39]
POS, 회계, 데이터베이스 등 TCP를 사용하는 시스템은 UDP 트래픽에 압박받고 있다. TCP에서 패킷을 손실하면 혼잡 제어가 작동하여 전송 속도를 억제하는 것도 한 요인이다. 실시간 애플리케이션과 비즈니스 애플리케이션 모두 비즈니스에 중요하므로, 서비스 품질 솔루션 개발이 중요하다고 주장하는 사람도 있다.[39]
8. UDP 기반 프로토콜
QUIC는 UDP를 기반으로 구축된 전송 프로토콜이다. QUIC는 안정적이고 안전한 연결을 제공한다. HTTP/3는 신뢰성과 보안을 보장하기 위해 TCP와 TLS의 조합을 사용하는 이전 버전의 HTTPS와 달리 QUIC를 사용한다. 이는 HTTP/3가 TCP와 TLS에 대해 두 번의 개별 핸드셰이크를 갖는 대신 단일 핸드셰이크를 사용하여 연결을 설정한다는 것을 의미하며, 이는 전체 연결 설정 시간이 단축됨을 의미한다.[12] OpenVPN과 같은 일부 VPN 시스템은 UDP를 사용하여 신뢰할 수 있는 연결을 구현하면서 애플리케이션 수준에서 오류 검사를 수행할 수 있다.
UDP는 다음과 같은 특정 애플리케이션에 적합하다.
- 도메인 네임 시스템, 네트워크 시간 프로토콜과 같은 간단한 쿼리-응답 프로토콜에 적합한 ''트랜잭션 지향적''이다.
- IP 터널링, 원격 프로시저 호출, 네트워크 파일 시스템과 같은 다른 프로토콜을 모델링하는 데 적합한 ''데이터그램''을 제공한다.
- DHCP, TFTP와 같이 전체 프로토콜 스택 없이 부트스트래핑 또는 기타 목적에 적합한 ''단순''하다.
- IPTV와 같은 스트리밍 미디어 애플리케이션과 같이 매우 많은 수의 클라이언트에 적합한 ''무상태''이다.
- VoIP, 온라인 게임, 실시간 스트리밍 프로토콜을 사용하는 많은 프로토콜과 같은 실시간 애플리케이션에 적합한 ''재전송 지연의 부재''
- 멀티캐스트를 지원하기 때문에, 서비스 검색, 정밀 시간 프로토콜, 라우팅 정보 프로토콜과 같은 공유 정보와 같은 브로드캐스트 정보에 적합하다.
도메인 네임 시스템(DNS), 단순 네트워크 관리 프로토콜(SNMP), 라우팅 정보 프로토콜(RIP)[3], 동적 호스트 구성 프로토콜(DHCP)을 포함한 다수의 주요 인터넷 응용 프로그램이 UDP를 사용한다.
9. 표준
규격서명 | 규격 종류 | 발행일 |
---|---|---|
RFC 768 | RFC 인터넷 표준 | 1980-08-28 |
RFC 2460 | 인터넷 프로토콜, 버전 6(IPv6) 규격 | |
RFC 2675 | IPv6 점보그램 | |
RFC 4113 | UDP용 관리 정보 베이스 |
참조
[1]
서적
Network Sales and Services Handbook
[2]
서적
Windows Command Line: The Personal Trainer for Windows 8.1 Windows Server 2012 and Windows Server 2012 R2
[3]
서적
Computer Networking: A Top-Down Approach
Pearson Education
[4]
서적
Data Networks IP and the Internet, 1st ed
John Wiley & Sons Ltd
[5]
웹사이트
UDP Protocol Overview
http://ipv6.com/arti[...]
Ipv6.com
2006-08-15
[6]
서적
TCP/IP: Protocol Suite, 1st ed
Tata McGraw-Hill Publishing Company Limited
[7]
서적
TCP/IP Illustrated: The protocols
Addison-Wesley
[8]
웹사이트
Compute 16-bit Ones' Complement Sum
http://mathforum.org[...]
John
2002-03-20
[9]
IETF
Internet Protocol, Version 6 (IPv6) Specification
[10]
IETF
Internet Protocol, Version 6 (IPv6) Specification
[11]
웹사이트
The impact of UDP on Data Applications
http://www.networkpe[...]
Networkperformancedaily.com
[12]
웹사이트
QUIC, a multiplexed stream transport over UDP
https://www.chromium[...]
[13]
IETF
[14]
서적
TCP/IP: Protocol Suite, 1st ed
Tata McGraw-Hill Publishing Company Limited
[15]
서적
Computer Networking: A Top-Down Approach
Pearson Education
[16]
IETF
[17]
문서
IP header のみトランザクション成立
[18]
IETF
[19]
웹사이트
UDP Protocol Overview
http://ipv6.com/arti[...]
Ipv6.com
[20]
IETF
[21]
IETF
[22]
문서
「正常かわからないパケット」が存在せず、「壊れた/届かないパケット」と「正常なパケット」のみからなる
[23]
문서
[24]
서적
Data Networks IP and the Internet, 1st ed
John Wiley & Sons Ltd
[25]
IETF
[26]
IETF
[27]
IETF
[28]
IETF
[29]
IETF
[30]
IETF
[31]
IETF
[32]
IETF
[33]
IETF
[34]
IETF
[35]
서적
マスタリング TCP/IP 入門編 第6版
オーム社
[36]
IETF RFC
User Datagram Protocol
//tools.ietf.org/htm[...]
1980-08
[37]
IETF RFC
IPv6 and UDP Checksums for Tunneled Packets
2013-04
[38]
IETF RFC
Internet Protocol, Version 6 (IPv6) Specification
//tools.ietf.org/htm[...]
1998-12
[39]
웹사이트
The impact of voice/video on data applications
http://www.serviceas[...]
Networkperformancedaily.com
2011-08-17
[40]
서적
Computer Networking: A Top-Down Approach
https://archive.org/[...]
Pearson Education
2010
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com