UDP (User Datagram Protocol)

1️⃣ 전송 계층

  • 송수신자를 연결하는 통신 서비스를 제공하는 계층.
  • 데이터의 전달을 담당
  • 프로토콜 : TCP, UDP

2️⃣ UDP란?

  • 데이터를 데이터그램 단위로 처리
    • 데이터그램 : UDP 헤더 + 실제 UDP 데이터
  • 비연결형 프로토콜
    • 각각의 패킷은 다른 경로로 전송되고, 각 패킷은 독립적인 관계를 가짐
    • 송신자는 수신자가 준비되었는지 확인X
  • 낮은 신뢰성
    • 데이터 손실이나 오류가 발생하면 애플리케이션이 처리
  • 순서 보장X
    • 패킷이 순서대로 도착하지 않을 수 있음
  • TCP보다 빠른 속도
    • 연결할 필요X
  • 패킷 크기 제한
    • 한 패킷당 최대 65,535byte의 데이터 전송 가능
  • 정리
    • 장점 : 속도, 간단한 구현
    • 단점 : 낮은 신뢰성, 순서 보장X
  TCP UDP
연결 방식 연결형 비연결형
데이터 수신 여부 O X
전송 순서 보장 O X
신뢰성 높음 낮음
속도 비교적 느림 비교적 빠름
패킷 교환 방식 가상 회선 데이터그램
헤더 길이 20 byte 8 byte
통신 방식 1:1 1:1, 1:N, N:M

3️⃣ UDP 패킷

  • UDP 패킷 : 헤더 + 페이로드(실제 데이터 내용)
  • UDP 헤더
    • 길이 : 8바이트
    • 구성
      1. 출발지 포트
        • 출발지 포트번호
      2. 목적지 포트
        • 목적지 포트번호
      3. 길이
        • 응용 계층에서 생성한 UDP 페이로드와 전송 계층에서 생성한 UDP 헤더가 더해진 데이터그램 길이
      4. 오류 검사(CheckSum)
        • 패킷의 무결성을 검사
        • 최소한의 오류만을 검출
        • 일반적으로 비활성 상태 - IPv6에서는 체크섬이 필수
        • 계산 방법
          1. UDP 헤더와 페이로드를 연결하여 하나의 데이터를 만든다.
          2. 데이터를 16비트 단위로 나눈다.
          3. 각 16비트 단위의 값을 모두 더한다.
          4. 이렇게 계산된 값의 하위 16비트를 구한다.
          5. 최종적으로 Checksum은 하위 16비트 값의 보수(ones’ complement)를 취하여 얻는다.

4️⃣ UDP 서버

  • TCP와 달리 핸드셰이크 과정이 없음
    • 연결 자체가 없기 때문에(connect 함수 존재x), 서버/클라이언트 소켓의 구분x
  • 소켓을 활용해 IP와 PORT 기반으로 데이터 전송
  • 서버와 클라이언트는 1:1, 1:N, N:M으로 연결 가능 ⇒ 브로드캐스트, 멀티캐스트
  • 데이터그램(메시지) 단위로 전송되며, 그 크기는 65535 byte. 크기가 초과되면 잘라서 전송
  • 흐름 제어X ⇒ 패킷의 전송/오류 여부를 확인 X
  • 참고사항
    • 흐름제어 : 데이터의 송수신 데이터 처리 속도를 조절하여, 수신자의 버퍼 오버플로우를 조절
    • 혼잡제어 : 네트워크 내의 패킷 수가 넘치지 않도록 방지

5️⃣ UDP 용도

  • 실시간 데이터 전송
    • 음성 통화와 스트리밍에서는 빠른 전송이 중요하고, 약간의 데이터 손실 허용
  • 여러 상대에게 같은 내용의 데이터 전송
  • 신뢰성이 필요하지 않은 소량의 데이터 전송