개념 사전 · 프로토콜

UDP

User Datagram Protocol · 사용자 데이터그램 프로토콜

는 포트와 길이·체크섬을 갖춘 데이터그램을 응용 사이에 전달하는 전송 프로토콜이다. 연결 설정·재전송·순서 복구는 제공하지 않으므로 필요한 신뢰성은 응용이 설계한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 8바이트의 간단한 헤더로 독립된 메시지 경계를 유지하며 전송한다.
  • 포트 번호로 · 같은 서비스와 클라이언트 소켓을 구별한다.
  • 체크섬으로 데이터와 의의사 헤더의 오류를 검출하되 오류 복구 정책은 상위에 맡긴다.

02어떤 순서로 동작하나

  1. 응용의 송신 요청

    응용이 목적지 주소·포트와 한 데이터그램을 소켓에 넘긴다.

  2. ·IP 헤더 구성

    송신 커널이 헤더와 IP 전달 정보를 구성해 출력 경로로 보낸다. 자체는 수신 확인을 기다리는 연결 상태를 만들지 않는다.

  3. 수신 소켓 선택

    수신 커널이 프로토콜·주소·포트 조건에 맞는 소켓을 찾고 데이터그램을 수신 큐에 넣는다.

  4. 응용의 수신

    응용이 큐에서 데이터그램을 읽는다. 버퍼 크기와 API 동작에 따라 전체 메시지를 받을 수 있는지 달라진다.

03먼저 알아둘 용어와 구성요소

가 경계를 보존해 전달하는 하나의 메시지 단위다. 바이트 스트림인 와 다르다.
헤더 8바이트와 데이터 길이를 합한 값이다. IP 헤더 길이는 포함하지 않는다.
체크섬 계산에 쓰는 IP 주소·프로토콜·길이 정보로 별도 전송 헤더가 아니다.
출발지 IP·목적지 IP·출발지 포트·목적지 포트·전송 프로토콜을 함께 사용하는 통신 식별 정보다.
응답 대상이나 송신 응용의 식별 등에 사용하는 의 16비트 출발지 포트 필드다.
수신 호스트에서 데이터그램을 전달할 응용을 구별하는 16비트 포트 필드다.
체크섬 계산에 추가하는 IP 주소·프로토콜·길이 정보다. 실제 헤더 앞에 별도 전송되는 헤더는 아니다.
LEARN THROUGH PRACTICE

실습: UDP 8888 메시지와 포트 역할 읽기

Ncat 송수신과 캡처를 연결하여 서버 포트·임시 포트·연결 표시를 구별한다.

실습 구성과 전제

  • 서버와 클라이언트 두 대의 격리 연습망이다. 명령의 서버 주소는 문서용 192.0.2.2로 치환했다.
  • 사진의 서버는 Ncat 7.95다. nc의 다른 구현은 옵션 해석이 다르므로 도움말을 확인한다.
  1. UDP 수신 소켓 준비

    • -u는 , -l은 수신 모드다. 8888은 로컬 서버 포트이며 같은 번호의 소켓과 별개다.
    • 일반 통신은 의 3-way handshake를 만들지 않는다. 이 실습은 문자 송수신이며 쉘 프로그램을 연결하지 않는다.
    text
    ncat -u -l 8888

    Ncat 문법으로 정리한 동일 목적의 수신 예시

    Netcat 통신·파일 전송·로그 전달 · 바인드쉘 실습2-udp를 활용한 통신원본 크기로 보기 ↗
    • nc -lvup 8888과 Ncat 버전이 보인다.
    • Listening on 0.0.0.0:8888 및 상대 포트 57862가 보인다.
    확인 기준

    수신 주소와 포트를 확인한다.

  2. 문자 전송과 결과 확인

    • 클라이언트에서 서버 주소· 8888을 지정하고 문자를 입력한다. 서버에 보이는 문자열은 응용 프로그램 수신의 증거다.
    • Connection from은 도구가 상대를 식별한 로그이며 연결 수립이나 전달 보장의 증거가 아니다.
    text
    ncat -u 192.0.2.2 8888

    서버 주소만 치환한 재구성 예시

    Netcat 통신·파일 전송·로그 전달 · 바인드쉘 실습2-udp를 활용한 통신원본 크기로 보기 ↗
    • 클라이언트 명령에 -u와 목적지 포트 8888이 있다.
    • 양쪽에서 입력한 UDP 메시지가 나타난다.
    확인 기준

    양방향 문자열을 확인한다. 한쪽만 보이면 반환 경로와 방화벽을 나누어 본다.

  3. 방향별 포트와 길이 대조

    • 서버의 응답은 8888→57862다. 요청은 클라이언트 임시 포트에서 서버 포트로 향한다.
    • Length 60은 사용자 데이터만의 크기가 아니다. 와 캡처 길이를 구별한다.
    text
    Wireshark 표시 필터: udp.port == 8888

    실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.

    Netcat 통신·파일 전송·로그 전달 · 바인드쉘 실습2-udp를 활용한 통신원본 크기로 보기 ↗
    • Protocol UDP, Info 8888 → 57862가 보인다.
    • Length는 60이며 UDP 헤더 상세는 이 화면에서 펼쳐져 있지 않다.
    확인 기준

    프로토콜·포트·실제 수신 문자를 대조한다. 한 패킷으로 이후 전체 전달을 보장하지 않는다.

실습에서 확인한 동작 원리

  • 에도 소켓과 포트는 있지만 상태·재전송 보장은 없다.
  • 도구 로그 문구보다 실제 프로토콜과 패킷 필드로 판별한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • 192.0.2.1:10000에서 198.51.100.2:20000으로 ASCII ABC를 보낸다. 데이터는 41 42 43이고 =8+3=11, 즉 0x000b다. 계산 워드는 c000 0201 c633 6402 0011 000b다. 주소는 네트워크 바이트 순서로 분할하고 0011은 0 바이트와 Protocol=17을 합친 값이다.
  • 헤더는 2710 4e20 000b 0000이다. 데이터는 4142 4300으로 합산하며 마지막 00은 홀수 길이를 맞추는 계산용 값이다. 모든 워드를 더하고 캐리를 접으면 0xe5d1이다. 비트 반전한 0x1a2e가 Checksum에 들어가며, 이를 포함해 다시 더하면 0xffff가 된다.
  • 이 예의 IP 헤더가 옵션 없는 20바이트이면 IP Total Length는 31바이트다. 계산용 패딩을 포함해 =12나 IP 길이=32로 적으면 잘못된 헤더가 된다.

05혼동하기 쉬운 점과 확인 기준

  • 목적지에서 해당 포트를 받는 소켓이 없으면 Port Unreachable이 돌아올 수 있다. 가 정책상 차단되거나 제한되면 같은 상태가 단순 시간 초과로 보일 수 있다.
  • 수신 버퍼가 가득 차면 도착한 데이터그램이 응용에 전달되지 못할 수 있다. 링크 수신량과 응용 수신 수의 차이를 시스템 드롭 통계와 연결한다.
  • 는 요청 ID를 정의하지 않는다. 등의 상위 프로토콜은 ID·질문·상대 주소를 이용해 응답을 짝짓고, 재시도·중복 처리·유효 기간을 자체적으로 관리한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.