UDP (User Datagram Protocol)

한눈에 보기

UDP는 연결 수립과 신뢰성 보장 없이 데이터그램을 전달하는 최소한의 전송 계층 프로토콜이다. TCP와의 차이, 실시간 서비스에서 선택되는 이유, QUIC과의 관계까지 정리한다.

최종 업데이트 2026.09.17

UDP(User Datagram Protocol)는 연결 수립이나 신뢰성 보장 없이 데이터그램(datagram)을 목적지로 보내기만 하는 최소한의 전송 계층 프로토콜이다. 순서 보장, 재전송, 혼잡 제어가 없어 TCP보다 지연이 낮고 오버헤드가 작으므로, 실시간 스트리밍과 온라인 게임, DNS 질의처럼 속도가 정확한 재전송보다 중요한 곳에 쓰인다. 최근에는 HTTP/3의 기반인 QUIC이 UDP 위에서 동작하면서 그 중요성이 다시 커졌다.

UDP의 설계 철학

전송 계층 프로토콜을 이해하는 좋은 방법은 "IP 위에 무엇을 얼마나 더 얹었는가"를 보는 것이다. IP 계층은 패킷을 목적지 호스트까지 전달하는 일만 한다. 전송 계층이 여기에 더하는 최소한의 역할은 포트 번호로 호스트 안의 프로세스를 구분하는 것인데, UDP는 정확히 그 최소한만 제공한다. UDP 헤더는 출발지 포트, 목적지 포트, 길이, 체크섬(checksum)의 네 필드, 8바이트가 전부이며, TCP 헤더의 기본 20바이트와 대비된다. 체크섬으로 손상된 데이터그램을 감지해 버릴 수는 있지만, 유실을 알려 주거나 다시 보내 주지는 않는다. 연결이라는 개념 자체가 없으므로 핸드셰이크도, 연결 상태 저장도 없다. 이 단순함이 UDP의 정체성이며, 신뢰성이 필요하면 애플리케이션이 필요한 만큼만 직접 구현하라는 설계 철학이 깔려 있다.

UDP 통신의 과정

  1. 송신 애플리케이션이 소켓을 만들고 목적지 주소와 포트를 지정해 데이터를 보낸다. 연결 수립 단계가 없어 첫 패킷부터 곧바로 데이터가 실리며, 같은 소켓으로 여러 상대와 통신할 수도 있다.
  2. UDP는 데이터에 8바이트 헤더만 붙여 IP 계층에 넘긴다. 메시지 경계가 보존되므로 보낸 단위 그대로 도착한다.
  3. 네트워크를 거치는 동안 데이터그램은 유실되거나 순서가 뒤바뀔 수 있으며, UDP는 이를 복구하지 않는다.
  4. 수신 측 UDP는 체크섬을 확인해 손상된 데이터그램을 버리고, 나머지를 목적지 포트의 소켓 버퍼에 넣는다.
  5. 수신 확인(ACK)을 보내지 않으므로 송신자는 도착 여부를 알 수 없다. 필요하다면 애플리케이션 계층에서 응답과 재시도 논리를 만든다.

TCP가 바이트 스트림(byte stream)으로 경계 없이 이어 붙이는 것과 달리, UDP는 데이터그램 단위의 경계가 유지된다는 점도 실무에서 중요한 차이다. TCP에서는 애플리케이션이 메시지 구분을 직접 설계해야 하지만 UDP에서는 한 번의 송신이 한 번의 수신과 대응한다.

TCP와의 비교

구분TCPUDP
연결3-way 핸드셰이크로 수립비연결형
신뢰성재전송으로 전달 보장보장 없음
순서순서 번호로 보장보장 없음
흐름과 혼잡 제어있음없음
데이터 단위바이트 스트림(경계 없음)데이터그램(경계 유지)
헤더 크기기본 20바이트8바이트
전송 방식1대1 유니캐스트유니캐스트 외에 멀티캐스트, 브로드캐스트 가능
대표 용도웹, 메일, 파일 전송DNS, 실시간 미디어, 게임, QUIC

UDP가 선택되는 이유

핵심 판단 기준은 "늦게 도착한 완전한 데이터와 제때 도착한 불완전한 데이터 중 무엇이 더 가치 있는가"이다. 실시간 음성이나 영상 통화에서 0.5초 전 프레임이 유실됐다면, 그것을 재전송받는 것보다 그냥 건너뛰고 최신 데이터를 보여 주는 편이 낫다. TCP는 유실된 조각이 도착할 때까지 이후 데이터를 애플리케이션에 주지 않으므로 오히려 끊김을 키운다. DNS처럼 요청과 응답이 각각 패킷 하나로 끝나는 통신에서는 핸드셰이크 비용 자체가 낭비이고, 응답이 없으면 다시 물으면 그만이다. 온라인 게임의 위치 갱신도 마찬가지로 최신 상태만 의미가 있으므로, 오래된 패킷을 애써 재전송받는 것이 무의미하다. 반면 UDP에는 혼잡 제어가 없어 무분별하게 쏟아 내면 네트워크를 해칠 수 있고, 발신지 주소를 위조해 작은 질의로 큰 응답을 피해자에게 보내게 하는 증폭 공격(amplification attack)에 악용되기도 하므로, 애플리케이션과 인프라 차원의 대책이 필요하다.

QUIC: UDP 위에 다시 세운 신뢰성

QUIC은 UDP 위에서 신뢰성, 순서 보장, 혼잡 제어, TLS 1.3 암호화를 모두 다시 구현한 전송 프로토콜로, HTTP/3의 기반이다. 굳이 UDP 위에 쌓은 이유는 새 전송 프로토콜을 IP 위에 직접 만들면 전 세계 라우터와 방화벽, 운영체제가 통과시켜 주지 않기 때문이다. 이미 어디서나 통하는 UDP를 통로로 삼고 그 위 로직은 사용자 공간 라이브러리로 구현하면, 운영체제 업데이트를 기다리지 않고도 프로토콜을 개선할 수 있다. QUIC은 스트림별 독립 전달로 TCP의 HOL 블로킹(Head-of-Line blocking)을 없앴고, 연결을 IP가 아닌 연결 ID로 식별해 와이파이에서 셀룰러로 바뀌어도 연결이 유지된다. 이런 이점 덕분에 주요 브라우저와 대형 서비스의 상당수 트래픽이 이미 HTTP/3로 전환되었다. UDP가 아무것도 하지 않는 프로토콜이기에 오히려 그 위에 무엇이든 세울 수 있었다는 점이 흥미로운 대목이다.

면접에서 이렇게 물어본다

  • TCP와 UDP의 차이를 설명하고 각각 어떤 서비스에 적합한지 예를 들어 보라.
  • 실시간 스트리밍이나 게임에서 UDP를 쓰는 이유를 TCP의 동작과 연결해 설명해 보라.
  • DNS가 기본적으로 UDP를 쓰는 이유와 TCP로 전환되는 경우는 무엇인가.
  • UDP 위에서 신뢰성이 필요하면 어떻게 해야 하는가. QUIC은 왜 UDP 위에 만들어졌는가.
  • UDP의 비연결성이 보안 관점에서 만드는 위험에는 어떤 것이 있는가.
네트워크 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기