UDP(User Datagram Protocol)
UDP(User Datagram Protocol)
데이터를 데이터그램 단위로 처리하고 비연결성을 가졌으며 신뢰성이 없는 프로토콜입니다.
데이터 그램 단위로 쪼개면서 전송해야하기 때문에 전송 계층에 해당합니다.
특징
TCP 와 다르게 비연결성을 가졌으며 수신측에 제대로 도착했는지 확인을 하지않는 비신뢰성 서비스입니다.
장점
높은 처리속도와 데이터 전송률 때문에 온라인 게임이나 실시간 스트리밍 서비스에 적합합니다.
또한 DNS 에서 UDP 를 사용하곤하는데, 여러가지 이유가있습니다.
-
Request 의 양이 적습니다 (UDP Request에 담길수있습니다)
-
TCP 의 3way handshaking 할 필요가 없어서 오버헤드가 발생할 일이 적습니다.
-
잃어버린 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 계산을 보조하기 위한것입니다.