1 minute read

UDP(User Datagram Protocol)

데이터를 데이터그램 단위로 처리하고 비연결성을 가졌으며 신뢰성이 없는 프로토콜입니다.

데이터 그램 단위로 쪼개면서 전송해야하기 때문에 전송 계층에 해당합니다.

특징

TCP 와 다르게 비연결성을 가졌으며 수신측에 제대로 도착했는지 확인을 하지않는 비신뢰성 서비스입니다.

장점

높은 처리속도와 데이터 전송률 때문에 온라인 게임이나 실시간 스트리밍 서비스에 적합합니다.

또한 DNS 에서 UDP 를 사용하곤하는데, 여러가지 이유가있습니다.

  1. Request 의 양이 적습니다 (UDP Request에 담길수있습니다)

  2. TCP 의 3way handshaking 할 필요가 없어서 오버헤드가 발생할 일이 적습니다.

  3. 잃어버린 Request 에 대한 손실은 Application Layer 에서 제어가 가능합니다.

UDP Header

1. Source Port (16bit)

발신지 포트번호

2. Destination Port(16bit)

목적지 포트번호

3. Length(16bit) # 가변적임

길이 = 헤더 + 데이터

4. CheckSum(16bit)

[송신자]

  • UDP 사용자 데이터 그램에 의사헤더를 추가합니다.

  • 검사합 필드를 0으로 만듭니다.

  • 전체 비트들을 16비트 단어로 나눕니다.

  • 만약 전체 바이트 수가 짝수가 아니라면 전부 0인 패딩 한 바이트 추가합니다.

  • 1의 보수 연산을 사용하여 16비트 섹션을 전부 더합니다.

  • 결과물의 보수를 구하고 이 16비트 값을 검사합 필드에 삽입합니다.

  • 의사헤더와 추가된 패딩을 없앱니다.

  • 캡슐화를 위해 UDP 사용자 데이터 그램을 IP 소프트웨어에 전달

[수신자]

  • 의사 헤더를 UDP 사용자 데이터그램에 더합니다

  • 필요하면 패딩을 더합니다.

  • 전체 비트를 16비트 섹션으로 나눕니다.

  • 1의 보수연산을 사용하여 모든 16비트 섹션의 합을 구합니다.

  • 만약 결과가 0이면 의사헤더와 추가된 헤더를 없애고 사용자 데이터그램으로 받아드립니다. 그렇지 않으면 삭제합니다.

5. Pseudo Header(의사헤더)

  • Pseudo 헤더는 IP 헤더와 UDP 헤더로 부터 선택된 필드로 구성됩니다.

  • IP 헤더에서 참조 : Source & Destination Address, Protocol

  • UDP 헤더에서 참조 : UDP Length

  • 8 bit 는 Zero 로 채워집니다.

  • Optional Pad 는 32 bit 를 채우지못하면 Zero 로 빈공간을 채웁니다.

  • Pseudo 헤더는 실제로 Destination 로 전송하지않으며 UDP checkSum 계산을 보조하기 위한것입니다.

Categories:

Updated: