UDP 데이터그램 전송의 서비스 구조와 선택 기준

UDP의 비연결성 전송, 포트 기반 프로세스 통신, 체크섬과 가상 헤더 구조를 TCP와 비교해 정리한다.

2026-08-14 · 최초 발행 2025-08-10

연결을 만들지 않고 전송하는 UDP

UDP(User Datagram Protocol)는 TCP/IP 스택의 전송 계층에서 최소한의 전송 기능을 제공하는 경량 프로토콜이다. 데이터를 보내기 전에 연결을 설정하지 않으며, 가상회선도 만들지 않는다. 각 패킷은 독립적으로 라우팅되므로 경로 역시 보장되지 않는다.

손실, 중복, 순서 변경이 발생해도 UDP 자체에는 이를 복구하는 장치가 없다. 연결 관리와 흐름 제어, 혼잡 제어를 제외한 구조이므로 단순하며, 연결 설정과 해제에 드는 오버헤드 없이 블록 단위의 대량 데이터를 전송하는 데 효율적이다.

8바이트로 구성된 UDP 헤더

UDP 헤더는 8바이트다. 발신지와 목적지 포트, 데이터그램 전체 길이, 체크섬으로 구성된다.

데이터 부분애플리케이션 데이터UDP 헤더 (8바이트)발신지 포트 번호2바이트목적지 포트 번호2바이트데이터그램 길이2바이트체크섬2바이트

발신지 포트와 목적지 포트는 각각 송신·수신 애플리케이션을 식별한다. 데이터그램 길이는 UDP 헤더와 데이터를 포함한 전체 길이를 뜻하며, 체크섬은 데이터 무결성 검사에 사용된다. 이들 필드는 모두 2바이트다.

IP 통신을 프로세스 통신으로 연결하는 포트

IP가 호스트와 호스트 사이의 전달을 담당한다면, UDP는 포트 번호를 이용해 특정 애플리케이션 프로세스까지 데이터를 보낸다. 여러 애플리케이션이 하나의 네트워크 인터페이스를 공유하도록 묶는 과정은 다중화(Multiplexing)이고, 수신한 패킷을 대상 애플리케이션에 나누는 과정은 역다중화(Demultiplexing)다.

수신 호스트송신 호스트애플리케이션 1포트 1234UDP다중화애플리케이션 2포트 5678IP 계층네트워크IP 계층UDP역다중화애플리케이션 1포트 9012애플리케이션 2포트 3456

UDP는 TCP와 달리 연결 설정과 종료 절차를 거치지 않는다. 3-way handshaking도 없고 연결 상태를 유지할 필요도 없다. 데이터그램은 각각 독립적으로 처리되며, 이 방식은 지연 시간과 서버 자원 사용을 줄이는 대신 신뢰성을 보장하지 않는다.

수신자송신자수신자송신자UDP 통신 (연결 설정 없음)데이터그램 3 손실순서가 바뀐 데이터그램 수신데이터그램 1데이터그램 2데이터그램 3 (손실)데이터그램 4데이터그램 5

체크섬 계산에만 쓰이는 가상 헤더

UDP는 체크섬을 계산할 때 가상 헤더(Pseudo Header)를 함께 사용한다. 가상 헤더는 실제 패킷으로 전송되지는 않지만, UDP 헤더와 데이터에 앞서 체크섬 계산 대상에 포함된다.

가상 헤더는 12바이트이며 IP 계층에서 발신지와 수신지 IP 주소를 가져온다. 여기에 제로 필드, 프로토콜, UDP 길이가 더해진다.

데이터 부분애플리케이션 데이터UDP 헤더 (8바이트)발신지 포트2바이트수신지 포트2바이트UDP 길이2바이트체크섬2바이트가상 헤더 (12바이트)발신지 IP 주소4바이트수신지 IP 주소4바이트제로 필드1바이트프로토콜1바이트UDP 길이2바이트

가상 헤더에는 발신지 IP 주소와 수신지 IP 주소가 각각 4바이트로 들어간다. 제로 필드와 프로토콜 번호는 각각 1바이트이며, UDP의 프로토콜 번호는 17이다. UDP 길이는 2바이트다.

체크섬은 가상 헤더, UDP 헤더, 데이터를 16비트 단위로 더한 뒤 1의 보수를 취해 계산한다. 수신 측 계산 결과가 모두 1이면 오류가 없는 것으로 판단한다. 오류가 발견된 데이터그램은 폐기되며, UDP는 복구를 시도하지 않는다. IPv4에서는 체크섬 사용이 선택적이고 IPv6에서는 필수다.

지연이 손실보다 민감한 통신

UDP는 패킷이 일부 빠지더라도 지연을 줄여야 하는 통신에 맞는다. 음성·비디오 스트리밍, VoIP, 화상 회의, 라이브 스트리밍이 여기에 해당한다.

DNS(Domain Name System)는 단순한 쿼리와 응답 구조, 빠른 응답 시간이 필요한 특성 때문에 UDP를 사용할 수 있다. 재전송 메커니즘은 애플리케이션 레벨에서 구현한다.

실시간 멀티플레이어 게임도 지연 최소화가 중요하고 일부 패킷 손실이 게임 경험에 심각한 영향을 미치지 않을 수 있어 UDP가 적합하다. 이 밖에 주기적으로 상태를 갱신하는 네트워크 모니터링의 SNMP(Simple Network Management Protocol), 작은 부트 이미지 등을 전송하는 TFTP(Trivial File Transfer Protocol)도 UDP 사용 사례다.

TCP와 나란히 보면 드러나는 선택 기준

TCP와 UDP는 모두 전송 계층 프로토콜이지만, 연결과 신뢰성을 다루는 방식이 다르다.

UDP비연결형비신뢰적 전송흐름 제어 없음혼잡 제어 없음순서 보장 없음헤더 크기: 8바이트TCP연결 지향적신뢰성 있는 전송흐름 제어혼잡 제어순서 보장헤더 크기: 20-60바이트

TCP는 3-way handshake로 연결을 설정하고 ACK와 재전송으로 신뢰성을 확보하며 데이터 순서를 보장한다. 대신 연결 관리와 흐름·혼잡 제어가 오버헤드를 만든다. 웹과 이메일 같은 애플리케이션에 적합하다.

UDP는 즉시 데이터를 전송하고 순서나 신뢰성을 보장하지 않는다. 일반적으로 더 빠르며, 실시간 애플리케이션처럼 속도를 우선하는 경우에 적합하다.

UDP를 선택할 때 남는 운영 책임

UDP에서는 패킷 손실, 중복, 순서 변경이 가능하므로 필요하다면 애플리케이션 레벨에서 신뢰성 메커니즘을 구현해야 한다. 혼잡 제어가 없어 네트워크 혼잡에 대응하지 않으며, 네트워크 자원을 과도하게 사용할 가능성도 있다.

방화벽이 UDP 트래픽을 차단하는 환경에서는 접근성 문제가 생길 수 있다. 엔터프라이즈 환경에서 특히 확인할 부분이다. NAT 통과도 TCP보다 복잡할 수 있으며 홀 펀칭(Hole Punching) 같은 기술이 필요하다.

UDP 자체는 암호화와 인증을 제공하지 않는다. 보안은 애플리케이션 레벨에서 구현해야 하며, DDoS 공격에 악용될 가능성도 고려해야 한다. UDP는 기본적인 체크섬 오류 검출만 제공한다는 전제에서, 통신 요구사항에 맞춰 TCP와의 선택 및 보완 방식을 설계해야 한다.

UDP전송 계층데이터그램네트워크체크섬