사용자 데이터그램 프로토콜
1. 개요
1. 개요
사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나이다. 전송 계층에서 동작하며, 인터넷 프로토콜(IP) 위에서 데이터를 전송하는 역할을 한다. TCP와 함께 가장 널리 사용되는 전송 프로토콜이다.
UDP의 주요 목적은 애플리케이션 프로세스 간에 최소한의 오버헤드로 데이터그램을 전송하는 것이다. 연결 설정 과정 없이 데이터를 보내기 때문에 비연결형 프로토콜로 분류된다. 이는 데이터를 보내기 전에 핸드셰이크 같은 사전 통신 절차가 필요 없음을 의미한다.
이 프로토콜은 1980년에 데이비드 리드가 설계했으며, RFC 768에 처음 표준으로 정의되었다. 기본적인 기능은 체크섬을 이용한 데이터 무결성 검사와 포트 번호를 이용한 다중화(multiplexing)이다. 신뢰성 있는 전송, 순서 보장, 혼잡 제어와 같은 기능은 제공하지 않는다.
UDP의 이러한 단순한 구조는 낮은 지연 시간과 빠른 전송 속도를 가능하게 한다. 이는 신속한 데이터 전달이 신뢰성보다 더 중요한 특정 응용 분야에서 결정적인 장점으로 작용한다.
2. 특징과 동작 원리
2. 특징과 동작 원리
사용자 데이터그램 프로토콜은 전송 계층 프로토콜로, 인터넷 프로토콜 스위트의 핵심 구성 요소 중 하나이다. TCP와 달리 연결 설정 과정 없이 데이터를 전송하는 비연결형 프로토콜이다. 데이터를 데이터그램이라는 독립적인 패킷 단위로 캡슐화하여 송신하며, 수신 측의 도착 확인이나 패킷 재전송을 보장하지 않는다.
이 프로토콜의 동작은 단순하다. 애플리케이션에서 보낼 데이터에 간단한 UDP 헤더를 추가한 후, 하위 계층인 IP에 전달한다. 헤더에는 출발지와 목적지의 포트 번호, 데이터그램 길이, 그리고 오류 검출을 위한 체크섬 필드가 포함된다. 체크섬은 선택 사항이지만, 데이터 무결성을 위한 기본적인 수단으로 사용된다. 이 과정에는 핸드셰이크나 흐름 제어 같은 복잡한 절차가 개입하지 않는다.
비연결성으로 인해 신뢰성은 낮지만, 그 대신 오버헤드가 작고 지연 시간이 짧다는 장점을 가진다. 패킷의 순서가 뒤바뀌거나 유실되더라도 프로토콜 자체는 이를 복구하려 시도하지 않는다. 이러한 특성은 애플리케이션 계층에서 신뢰성을 관리해야 함을 의미한다. 즉, 필요에 따라 애플리케이션 자체적으로 확인 응답 및 재전송 로직을 구현할 수 있다.
UDP 헤더의 구조는 다음과 같이 매우 간결하다.
필드(16비트) | 설명 |
|---|---|
출발지 포트 | 송신 프로세스를 식별하는 포트 번호[1]. |
목적지 포트 | 수신 프로세스를 식별하는 포트 번호. |
길이 | UDP 헤더와 데이터를 합친 전체 길이(바이트 단위). |
체크섬 | 헤더와 데이터의 오류를 검출하기 위한 값(0일 경우 전송하지 않음을 의미). |
이러한 간결한 구조와 비연결적 특성은 실시간성이 중요한 응용 분야나 간단한 질의-응답 통신에 UDP를 적합하게 만든다.
2.1. 비연결성과 신뢰성
2.1. 비연결성과 신뢰성
사용자 데이터그램 프로토콜의 가장 핵심적인 특성은 비연결형 프로토콜이라는 점이다. 이는 데이터를 전송하기 전에 3방향 핸드셰이크와 같은 연결 설정 과정을 거치지 않는다는 것을 의미한다. 송신 측은 수신 측의 상태나 준비 여부를 확인하지 않고, 즉시 데이터그램이라는 독립적인 패킷을 목적지 IP 주소와 포트 번호로 전송한다. 이로 인해 통신의 오버헤드가 매우 낮고, 전송 지연 시간이 짧아진다.
반면, 이러한 비연결성은 신뢰성 보장 메커니즘의 부재로 이어진다. UDP는 패킷의 순차적 전달, 중복 제거, 손실된 패킷의 재전송을 보장하지 않는다. 패킷이 네트워크 경로 상에서 손실되거나 순서가 바뀌어 도착하더라도 프로토콜 자체는 이를 복구하거나 알리지 않는다. 또한, 혼잡 제어 기능이 없어 네트워크가 혼잡한 상황에서도 전송 속도를 조절하지 않는다.
따라서 UDP의 신뢰성은 상위 계층 애플리케이션의 책임으로 넘어간다. 애플리케이션 개발자는 필요에 따라 체크섬 검사, 타임아웃, 재전송 로직, 시퀀스 번호 관리 등의 메커니즘을 직접 구현하여 부분적인 신뢰성을 확보할 수 있다. 이는 전송 제어 프로토콜이 제공하는 포괄적인 신뢰성 서비스와 대비되는 접근 방식이다.
결과적으로 UDP는 속도와 효율성을 우선시하되, 일부 데이터 손실이나 오류가 허용되는 서비스에 적합한 프로토콜이다. 반면, 데이터의 완전하고 정확한 전송이 필수적인 서비스에는 전송 제어 프로토콜이 더 적절한 선택이 된다.
2.2. 헤더 구조와 포트 번호
2.2. 헤더 구조와 포트 번호
사용자 데이터그램 프로토콜 헤더는 매우 단순하며, 총 8바이트로 구성되어 있다. 이 헤더는 4개의 필드로 이루어져 있으며, 각 필드는 2바이트(16비트) 크기를 가진다. 헤더 구조는 다음과 같다.
필드 | 크기(바이트) | 설명 |
|---|---|---|
송신 포트 번호 | 2 | 데이터를 보내는 애플리케이션의 포트 번호 |
수신 포트 번호 | 2 | 데이터를 받을 애플리케이션의 포트 번호 |
길이 | 2 | UDP 헤더와 데이터를 합친 전체 길이(최소 8바이트) |
체크섬 | 2 | 헤더와 데이터의 오류 검출을 위한 값(선택적[2]) |
포트 번호는 0부터 65535까지의 값을 가지며, 데이터를 주고받는 특정 프로세스나 서비스를 식별하는 주소 역할을 한다. 포트 번호는 크게 세 범위로 나뉜다. 0부터 1023번까지는 잘 알려진 포트로, HTTP(80), DNS(53), DHCP(67/68) 등 주요 서비스에 할당되어 있다. 1024부터 49151번까지는 등록된 포트, 49152번부터 65535번까지는 동적/사설 포트로 사용된다.
이 간결한 헤더 구조는 전송 제어 프로토콜과 대비되는 UDP의 특징을 잘 보여준다. 체크섬 필드를 제외하면 헤더에 연결 상태나 순서, 흐름 제어를 위한 정보가 전혀 포함되어 있지 않다. 이는 각 데이터그램이 독립적으로 처리되어야 함을 의미하며, 빠른 전송을 가능하게 하는 핵심 설계 요소이다.
3. TCP와의 비교
3. TCP와의 비교
TCP는 연결 지향적이고 신뢰성 있는 데이터 전송을 보장하는 반면, UDP는 비연결적이고 최소한의 오류 검사만을 제공하는 프로토콜이다. 이 근본적인 차이로 인해 두 프로토콜은 서로 다른 목적과 환경에 적합하다.
주요 차이점은 다음과 같이 표로 정리할 수 있다.
특성 | ||
|---|---|---|
연결 방식 | 연결 지향적 (3-way handshake) | 비연결형 |
신뢰성 | 높음 (순서 보장, 재전송, 흐름 제어) | 낮음 (기본적인 체크섬만) |
전송 속도 | 상대적으로 느림 (오버헤드 큼) | 상대적으로 빠름 (오버헤드 작음) |
헤더 크기 | 20-60 바이트 (크기 가변) | 8 바이트 (고정) |
데이터 경계 | 바이트 스트림 (경계 없음) | 메시지 지향적 (데이터그램 경계 있음) |
혼잡 제어 | 있음 | 없음 |
사용 예시 |
TCP는 데이터의 정확한 전달이 가장 중요한 애플리케이션에 사용된다. 파일 전송이나 웹 페이지 로딩과 같이 데이터가 하나라도 손실되면 전체가 무의미해지는 경우에 적합하다. 반면 UDP는 작은 지연 시간과 빠른 전송 속도가 더 중요한 애플리케이션에 선호된다. 실시간 동영상 회의나 온라인 게임에서는 패킷의 순간적인 손실보다 지연이 더 치명적이기 때문이다. 또한 DNS 쿼리와 같이 요청과 응답이 매우 짧고 단순한 트랜잭션에서는 TCP의 연결 설정 오버헤드가 불필요하다.
따라서 프로토콜 선택은 애플리케이션의 요구사항에 따라 결정된다. 신뢰성을 TCP에 의존하는 대신, 애플리케이션 계층에서 필요한 신뢰성 메커니즘을 직접 구현하는 것도 가능하다. 이는 QUIC와 같은 현대적 프로토콜이 UDP 위에 구축되어 TCP의 장점과 UDP의 장점을 결합하려는 시도로 이어졌다.
4. 주요 용도와 응용 사례
4. 주요 용도와 응용 사례
UDP는 TCP와 달리 연결 설정이나 신뢰성 보장 없이 데이터를 전송하는 특징을 가지며, 이로 인해 특정 분야에서 선호되는 프로토콜이다. 낮은 지연 시간과 오버헤드가 중요한 응용 프로그램에서 주로 사용된다.
주요 용도는 다음과 같다.
* DNS: 도메인 이름을 IP 주소로 변환하는 질의-응답 통신은 대부분 단일 패킷으로 이루어지며, 빠른 응답이 중요하므로 UDP를 사용한다. 응답이 손실되면 클라이언트가 재요청을 보낸다.
* DHCP: 네트워크에 새로 접속하는 장치가 IP 주소 등을 자동으로 할당받는 과정에서 UDP를 사용한다. 클라이언트는 아직 IP 주소가 없으므로 브로드캐스트 방식으로 통신해야 하며, UDP가 이에 적합하다.
* RTP를 이용한 실시간 스트리밍 및 음성 통화(VoIP): 스카이프나 줌과 같은 서비스에서 오디오/비디오 데이터를 전송할 때 UDP를 기반으로 한다. 중간에 일부 패킷이 유실되더라도 재전송을 기다리면 화면이나 음성이 끊기므로, 지연을 최소화하는 것이 더 중요하다.
* 온라인 게임: 게임 내 플레이어의 위치, 동작 등 실시간 상태 정보는 매우 빠르게 업데이트되어야 한다. 최신 상태 정보가 뒤늦게 도착하는 것보다는 일부 정보가 유실되더라도 낮은 지연을 유지하는 것이 일반적으로 더 나은 사용자 경험을 제공한다.
* SNMP: 네트워크 장치를 모니터링하고 관리하는 데 사용되며, 정기적인 상태 보고(트랩)나 간단한 질의에 UDP가 효율적이다.
* TFTP: 구성 파일이나 펌웨어 이미지와 같은 작은 파일을 전송하는 데 사용되는 간단한 프로토콜로, 복잡한 제어 없이 UDP를 사용한다.
다음 표는 UDP가 일반적으로 사용되는 몇 가지 주요 프로토콜과 그 용도를 정리한 것이다.
프로토콜/응용 분야 | 주요 용도 | UDP 사용 이유 |
|---|---|---|
[[도메인 네임 시스템 | DNS]] | 도메인 이름 해석 |
[[동적 호스트 구성 프로토콜 | DHCP]] | IP 주소 자동 할당 |
[[실시간 전송 프로토콜 | RTP]]/VoIP | 실시간 오디오/비디오 스트리밍 |
다중 사용자 온라인 게임 | 실시간 상태 동기화 | 빠른 업데이트로 반응성 유지 |
[[간이 네트워크 관리 프로토콜 | SNMP]] | 네트워크 관리 및 모니터링 |
[[단순 파일 전송 프로토콜 | TFTP]] | 간단한 파일 전송 |
요약하면, UDP는 신뢰성보다는 속도와 효율성이 우선시되는 상황, 특히 트랜잭션이 작거나 실시간성이 요구되는 통신에서 핵심적인 역할을 한다.
4.1. DNS와 DHCP
4.1. DNS와 DHCP
DNS는 사람이 읽을 수 있는 도메인 이름(예: www.example.com)을 컴퓨터가 이해하는 IP 주소로 변환하는 시스템이다. DNS 쿼리와 응답은 대부분 UDP를 사용하여 전송된다. 이는 대부분의 DNS 요청이 단일 요청과 단일 응답으로 구성된 짧은 교환 형태이기 때문이다. UDP의 낮은 오버헤드와 빠른 속도가 이러한 특성에 적합하다. 일반적으로 DNS는 포트 번호 53을 사용한다. DNS 메시지가 단일 UDP 데이터그램의 크기(전통적으로 512 바이트)를 초과하는 경우, 또는 DNSSEC과 같이 더 큰 응답이 필요한 경우에는 TCP로 대체될 수 있다.
DHCP는 네트워크에 새로 연결된 장치가 자동으로 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소 등의 네트워크 구성 정보를 얻을 수 있게 해주는 프로토콜이다. DHCP 통신은 주로 UDP를 기반으로 한다. 클라이언트는 초기 네트워크 구성이 없는 상태에서도 브로드캐스트를 통해 서버를 찾아야 하므로, 연결 설정이 필요 없는 UDP의 비연결성 특성이 핵심이다. DHCP 클라이언트는 일반적으로 임시 포트(68번)를, 서버는 67번 포트를 사용한다.
DNS와 DHCP가 UDP를 선호하는 공통된 이유는 다음과 같다.
프로토콜 | 주요 UDP 사용 이유 | 사용 포트 |
|---|---|---|
요청-응답이 빠르고 간단하며, 연결 설정 지연이 없음 | 53 | |
클라이언트가 초기 IP 없이도 브로드캐스트로 통신 가능 | 클라이언트: 68, 서버: 67 |
이 두 프로토콜은 신뢰성보다는 속도와 단순함이 더 중요한 서비스에 속한다. 패킷 손실이 발생하면 클라이언트가 간단히 요청을 재전송하는 방식으로 처리한다. 이는 TCP의 복잡한 핸드셰이크와 재전송 메커니즘보다 전체 시스템 효율성 측면에서 더 유리한 경우가 많다.
4.2. 실시간 스트리밍 및 게임
4.2. 실시간 스트리밍 및 게임
UDP는 낮은 지연 시간과 빠른 전송 속도가 중요한 실시간 애플리케이션에서 널리 사용된다. TCP와 달리 연결 설정 과정이 없고, 패킷 손실 시 재전송을 위한 복잡한 절차가 없기 때문에 데이터가 순차적으로 도착하지 않거나 일부 손실되더라도 즉시 다음 데이터를 처리할 수 있다. 이러한 특성은 음성 통화, 화상 회의, 라이브 비디오 스트리밍과 같이 시간에 민감한 서비스에 적합하다.
실시간 스트리밍 분야에서는 실시간 전송 프로토콜이 UDP를 기반으로 동작한다. RTP는 오디오나 비디오와 같은 실시간 데이터의 전송을 담당하며, RTP 제어 프로토콜과 함께 사용되어 전송 품질을 모니터링하고 피드백을 제공한다. 지연이 적은 전송이 화질이나 음질의 일시적 저하보다 중요하기 때문에, UDP의 비신뢰적 특성은 오히려 장점으로 작용한다. 일부 패킷이 손실되면 화면이 일시적으로 깨지거나 음성이 끊길 수 있으나, 전체적인 실시간성은 유지된다.
온라인 게임, 특히 퍼스트퍼슨 슈팅 게임이나 실시간 전략 게임과 같은 장르에서 UDP는 필수적이다. 플레이어의 위치, 동작, 명령어와 같은 게임 상태 정보는 매우 빠르게 업데이트되어야 하며, 수 밀리초의 지연도 게임 플레이에 치명적 영향을 미칠 수 있다. TCP의 신뢰성 보장 메커니즘은 패킷 손실 시 재전송과 순서 정렬로 인해 예측 불가능한 지연을 발생시켜, 게임 경험을 해칠 수 있다. 반면 UDP는 최신 상태 정보를 지속적이고 빠르게 전송하는 데 더 적합하다.
다만, UDP 자체는 혼잡 제어나 신뢰성 보장 기능이 없기 때문에, 애플리케이션 수준에서 이러한 문제를 해결해야 한다. 많은 실시간 프로토콜과 게임 엔진은 UDP 위에 자체적인 신뢰성 메커니즘을 일부 구현하여, 절대적으로 중요한 데이터(예: 게임 시작 명령, 점수 획득)는 신뢰적으로 전송하고, 빈번히 업데이트되는 데이터(예: 플레이어 위치)는 빠른 전송을 우선시하는 하이브리드 방식을 사용하기도 한다.
4.3. SNMP와 TFTP
4.3. SNMP와 TFTP
SNMP(Simple Network Management Protocol)는 네트워크 장비를 관리하고 모니터링하기 위한 표준 프로토콜이다. 주로 라우터, 스위치, 서버, 프린터와 같은 장치들의 상태 정보를 수집하거나 구성 설정을 변경하는 데 사용된다. SNMP는 관리 시스템(Manager)과 관리 대상 에이전트(Agent) 간의 통신에 UDP 포트 161과 162를 사용한다. 포트 161은 정보 요청(Get) 및 설정(Set)에, 포트 162는 에이전트가 관리 시스템으로 보내는 비동기 알림인 Trap 메시지 수신에 사용된다. 네트워크 관리의 효율성을 위해 설계된 SNMP는 경량의 요청-응답 및 알림 메커니즘에 적합한 UDP의 비연결적 특성을 활용한다.
TFTP(Trivial File Transfer Protocol)는 매우 간단한 파일 전송 프로토콜이다. FTP(File Transfer Protocol)에 비해 기능이 제한적이지만 구현이 단순하고 용량이 작아, 디스크 없는 워크스테이션이 부팅 시 운영체제 이미지를 다운로드하거나 네트워크 장비에 구성 파일이나 펌웨어를 전송하는 등의 특수한 목적으로 널리 사용된다. TFTP는 UDP 포트 69를 사용하여 동작한다. 파일 전송은 각 데이터 블록(기본 512바이트)에 대한 확인 응답을 주고받는 단순한 방식으로 진행되며, 마지막으로 512바이트 미만의 블록이 전송되면 전송이 완료된 것으로 간주한다.
두 프로토콜은 모두 신뢰성보다는 단순성과 경량 구현에 중점을 두어 UDP를 선택한 대표적인 사례이다. SNMP는 네트워크 관리 트래픽이 빈번하고 작은 크기로 발생하는 특성상, 연결 설정 오버헤드가 큰 TCP보다 UDP가 더 효율적이다. TFTP는 애플리케이션 계층에서 자체적인 확인과 재전송 메커니즘을 구현하여 기본적인 신뢰성을 보장하지만, TCP와 같은 복잡한 흐름 제어나 혼잡 제어는 제공하지 않는다.
5. 장점과 단점
5. 장점과 단점
UDP의 가장 큰 장점은 낮은 지연 시간과 오버헤드입니다. 연결 설정 과정이 없고, 데이터 전송 후의 확인 응답이나 재전송 메커니즘이 존재하지 않아 통신 시작이 빠르고 네트워크 자원을 적게 소모합니다. 이는 짧은 메시지를 빈번히 교환하거나 실시간 처리가 중요한 환경에서 결정적인 이점으로 작용합니다. 또한 헤더 구조가 단순해 처리 부담이 적고, 일대다 통신인 브로드캐스트와 멀티캐스트를 기본적으로 지원합니다.
반면, UDP의 주요 단점은 신뢰성 부재입니다. 패킷의 순서 보장, 중복 제거, 손실 복구 등의 기능을 제공하지 않습니다. 전송된 데이터그램이 목적지에 도착했는지, 올바른 순서로 도착했는지 확인할 수 없습니다. 이는 네트워크 혼잡 시 데이터 손실이 발생할 수 있음을 의미하며, 응용 프로그램 레벨에서 필요한 경우 신뢰성 메커니즘을 직접 구현해야 하는 부담을 줍니다.
다음 표는 UDP의 주요 장단점을 요약한 것입니다.
장점 | 단점 |
|---|---|
낮은 지연 시간과 빠른 시작 | 데이터 전송의 신뢰성 보장 없음 |
헤더 오버헤드가 작고 단순함 | 패킷 순서 보장이나 중복 제거 기능 없음 |
연결 상태 유지 불필요(무상태) | 네트워크 혼잡 제어 메커니즘 부재 |
브로드캐스트/멀티캐스트 지원 용이 | 응용 프로그램이 오류 처리 책임 짐 |
이러한 특성 때문에 UDP는 속도와 실시간성이 신뢰성보다 우선시되는 서비스에 적합합니다. 신뢰성이 필요한 경우, 응용 프로그램이 체크섬을 활용한 오류 검출, 타임아웃 기반의 재전송 로직 등을 추가하거나, TCP나 QUIC과 같은 다른 프로토콜을 선택하는 것이 일반적입니다.
6. UDP 기반 프로토콜
6. UDP 기반 프로토콜
UDP의 단순하고 빠른 특성을 기반으로 하여, 특정 응용 분야의 요구사항을 충족시키기 위해 여러 프로토콜이 개발되었다. 이러한 프로토콜들은 UDP 위에서 동작하며, 신뢰성, 실시간성, 혹은 제어 기능 등을 추가하는 형태로 진화했다.
대표적인 예로 QUIC이 있다. QUIC은 구글에서 개발한 전송 계층 네트워크 프로토콜로, 초기에는 UDP를 기반으로 TLS 보안 연결을 통합하여 TCP의 3방향 핸드셰이크 지연을 줄이는 것을 목표로 했다. 이후 IETF에 의해 표준화되면서, 다중 스트림 지원, 연결 마이그레이션, 향상된 혼잡 제어 등 현대 웹의 요구에 부응하는 기능을 제공한다. QUIC은 HTTP/3의 기본 전송 프로토콜로 채택되어 널리 사용된다.
실시간 미디어 전송을 위한 RTP와 그 제어 프로토콜인 RTCP도 UDP를 주로 사용한다. RTP는 오디오, 비디오와 같은 실시간 데이터의 전송 타이밍, 순서, 패킷 손실 감지 등을 담당한다. 신뢰성보다는 낮은 지연과 적시 전달이 중요한 환경에서 UDP의 비연결성 특성이 적합하기 때문이다. RTCP는 RTP 세션의 품질 모니터링, 제어 및 참가자 정보 교환을 위해 RTP와 함께 사용된다.
프로토콜 | 주요 목적 | UDP 활용 방식 |
|---|---|---|
웹 트래픽 전송 (HTTP/3), 지연 감소 | UDP 위에 신뢰성, 다중화, 보안 계층 구축 | |
[[실시간 전송 프로토콜 | RTP]]/RTCP | 실시간 오디오/비디오 스트리밍 |
[[단순 네트워크 관리 프로토콜 | SNMP]] | 네트워크 장치 관리 |
[[간단한 파일 전송 프로토콜 | TFTP]] | 간단한 파일 전송 (예: 네트워크 부팅) |
이 외에도 SNMP, TFTP, DNS 등 많은 프로토콜이 UDP를 기반으로 한다. 이들은 각각 관리 정보 교환, 경량 파일 전송, 이름 해석이라는 특정 작업에 집중하며, TCP의 복잡한 연결 설정 및 유지 관리 오버헤드 없이 효율적으로 동작한다. 이러한 UDP 기반 프로토콜들은 인터넷 생태계에서 특화된 기능을 수행하는 중요한 구성 요소를 이룬다.
6.1. QUIC
6.1. QUIC
QUIC(Quick UDP Internet Connections)는 구글이 개발한 전송 계층 네트워크 프로토콜로, TCP와 TLS의 기능을 사용자 데이터그램 프로토콜 위에 재설계하여 성능과 보안을 개선하는 것을 목표로 한다. 초기에는 '구글 QUIC'(gQUIC)라는 이름으로 구글의 서비스에 적용되었으며, 이후 IETF에 의해 표준화 작업이 진행되어 현재는 HTTP/3의 기반 프로토콜로 채택되었다.
QUIC의 핵심 설계 목표는 TCP의 핸드셰이크와 TLS의 암호화 협상으로 인한 지연(레이턴시)을 줄이는 것이다. 이를 위해 QUIC는 연결 설정 시 TCP의 3-way 핸드셰이크와 TLS 1.3의 핸드셰이크를 결합한 단일 왕복(RTT, Round-Trip Time)으로 처리한다[3]. 또한, 각 QUIC 연결은 고유한 연결 ID를 가지기 때문에, 사용자의 네트워크가 변경되어도(예: Wi-Fi에서 셀룰러로 전환) 기존 연결을 유지할 수 있어 이동성 지원에 유리하다.
QUIC는 사용자 데이터그램 프로토콜을 전송 매체로 사용하지만, 그 위에 신뢰성 있는 데이터 전송, 혼잡 제어, 다중 스트림 지원 등의 기능을 구현한다. 다음은 QUIC가 제공하는 주요 기능을 정리한 표이다.
기능 | 설명 |
|---|---|
통합 암호화 | 모든 패킷 헤더와 페이로드가 기본적으로 암호화된다. |
다중 스트림 | 단일 연결 내에서 독립적인 여러 논리적 스트림을 지원하여 헤드 오브 라인 블로킹 문제를 해결한다. |
향상된 혼잡 제어 | TCP보다 더 유연하고 빠르게 적응하는 혼잡 제어 알고리즘을 적용할 수 있다. |
연결 마이그레이션 | 연결 ID를 통해 클라이언트 IP 주소가 변경되어도 연결을 유지할 수 있다. |
이러한 특성으로 인해 QUIC는 특히 웹 트래픽(HTTP/3), 실시간 통신, 대규모 서비스에서의 연결 효율성 향상에 적합한 프로토콜로 평가받고 있다.
6.2. RTP/RTCP
6.2. RTP/RTCP
RTP(Real-time Transport Protocol)는 오디오, 비디오와 같은 실시간 멀티미디어 데이터 스트림을 전송하기 위해 설계된 사용자 데이터그램 프로토콜 기반의 프로토콜이다. 주로 인터넷 전화(VoIP), 화상 회의, 스트리밍 서비스에 사용된다. RTP 자체는 데이터의 전달만을 담당하며, 시간 동기화, 패킷 손실 감지, 보안과 같은 서비스는 별도의 프로토콜에 의존한다. 이와 쌍을 이루는 RTCP(RTP Control Protocol)는 세션 참여자들에게 제어 정보를 주기적으로 전송하여 전송 품질을 모니터링하고 동기화를 지원한다.
RTP 패킷의 헤더는 페이로드 타입 식별, 시퀀스 번호, 타임스탬프, 동기화 소스(SSRC) 식별자 등의 필드를 포함한다. 시퀀스 번호는 패킷 손실을 감지하는 데 사용되며, 타임스탬프는 수신 측에서 올바른 재생 타이밍을 결정하는 데 핵심적이다. SSRC는 한 세션 내에서 각 미디어 소스를 고유하게 식별한다. RTCP 패킷은 여러 타입으로 구분되는데, 발신자 보고(SR), 수신자 보고(RR), 소스 설명(SDES), 애플리케이션 정의(APP) 패킷 등이 대표적이다. 이 보고서들을 통해 패킷 손실률, 지터(지연 변동), 왕복 시간 같은 네트워크 상태 정보를 교환한다.
RTCP 패킷 타입 | 약어 | 주요 목적 |
|---|---|---|
발신자 보고 | SR | 활성 발신자가 전송한 데이터 및 수신 통계 보고 |
수신자 보고 | RR | 비활성 발신자(수신 전용)가 수신 통계 보고 |
소스 설명 | SDES | 사용자 이름, 이메일 등 참가자 식별 정보 전송 |
작별 인사 | BYE | 세션 종료를 알림 |
애플리케이션 정의 | APP | 애플리케이션별 기능 확장 |
RTP/RTCP는 신뢰성보다는 낮은 지연과 적시성에 초점을 맞춘다. 따라서 전송 제어 프로토콜과 달리 손실된 패킷을 재전송하지 않는다. 대신, 수신 측 애플리케이션은 시퀀스 번호와 타임스탬프를 기반으로 손실을 감지하고, 오류 은닉 기법을 사용하여 재생 품질을 유지하려고 시도한다. 이 구조는 실시간 통신에서 필수적인 저지연 특성을 보장하지만, 네트워크 혼잡이 심해질 경우 품질이 급격히 저하될 수 있다는 단점도 있다.
7. 보안 고려사항
7. 보안 고려사항
UDP는 기본적으로 인증, 기밀성, 무결성을 제공하지 않는 단순한 프로토콜이다. 이는 설계상의 특성으로, 헤더에 최소한의 정보만 포함하여 오버헤드를 줄이고 속도를 높이는 데 초점을 맞추었기 때문이다. 결과적으로, UDP 패킷은 스푸핑, 재전송 공격, 변조, 정보 유출 등의 위협에 취약하다. 예를 들어, 공격자는 쉽게 출발지 IP 주소와 포트 번호를 위조한 패킷을 생성하여 전송할 수 있다.
이러한 보안 취약점을 해결하기 위해 UDP를 사용하는 응용 계층 프로토콜이나 네트워크 계층 보안 프로토콜이 종종 함께 사용된다. 대표적인 방법은 IPsec을 통해 전체 IP 패킷을 암호화하고 인증하는 것이다. 또한, DTLS는 TLS 프로토콜을 데이터그램 환경에 맞게 조정한 프로토콜로, UDP 상에서 직접 메시지의 기밀성과 무결성을 보장한다. 음성 및 영상 전송에 널리 쓰이는 RTP는 보안 기능을 제공하지 않으므로, 그 보안 확장판인 SRTP를 사용하여 암호화와 인증을 구현한다.
UDP 기반 서비스의 주요 공격 벡터는 DDoS 공격, 특히 증폭 공격이다. 공격자는 출발지 주소를 공격 대상의 IP로 위조한 작은 요청 패킷을 DNS 또는 NTP 서버와 같이 UDP로 응답하는 공개 서버에 전송한다. 이 서버는 요청에 비해 훨씬 큰 응답 패킷을 공격 대상에게 전송하게 되어, 대역폭이 고갈된다. 이러한 공격을 완화하기 위해 네트워크 운영자는 출발지 주소 스푸핑을 차단하는 BCP38과 같은 최선의 실행 방법을 적용하고, 서비스 제공자는 응답 크기를 제한하거나 재귀적 쿼리를 제어하는 설정을 강화한다.
