수정 송신이 필요없는 데이터의 송신은 UDP가 효율적이다
- 어떤 상황에서는 TCP 처럼 복잡한 구조를 사용해도 효율적으로 데이터를 다시 보낼 수 있음. 이것은 데이터의 크기가 패킷 한개에 수용할 수 있을만큼 짧은 경우임
- 또한 TCP의 복잡한 구조를 사용하지 않으면 접속하거나 연결을 끊을 때 제어용 패킷을 보낼 필요가 없음
- 무언가 데이터를 보내면 보통은 회신이 돌아오므로 회신이 수신 확인 응답을 대신할 수 있어서 수신 확인 응답 패킷도 필요 없음
제어용 짧은 데이터
- DNS 서버에 대한 조회 등 제어용으로 실행하는 정보 교환은 한 개의 패킷으로 끝나는 경우가 많으므로 TCP가 아니라 UDP를 사용함
- UDP로 송신할 수 있는 데이터의 최대 길이는 IP 패킷의 최대 길이에서 IP 헤더와 UDP 헤더를 뺀 길이임
- MTU나 MSS와는 개념이 다른게, 이는 이더넷이나 통신 회선 등의 패킷의 최대 길이를 바탕으로 산출하지만, IP 패킷의 최대 길이는 IP 헤더의 ‘전체 길이'라는 필드의 값으로 결정되기 때문임
- ‘전체 길이'는 16비트 값으로 표현하므로 IP 프로토콜의 사양이라는 관점에서 보면 IP 패킷의 최대값은 65,535바이트. IP 헤더와 UDP 헤더의 길이를 빼면 UDP의 데이터 최대 길이는 65,507바이트
- 이처럼 큰 데이터는 이더넷이나 통신 회선의 패킷에 수용할 수 없으므로 IP 담당 부분이 조각 나누기 기능에 의해 패킷을 분할하고 송신동작 실행함
- UDP에는 TCP와 같은 수신확인이나 윈도우가 없어서 데이터 송.수신 전에 제어 정보를 주고받을 필요가 없고, 접속이나 연결 끊기 단계가 없음
- 애플리케이션에서 송신 데이터를 받으면 여기에 UDP 헤더를 부가하고 이것을 IP에 의뢰하여 송신하기만 함
- 수신도 간단함. IP 헤더에 기록되어 있는 수신처 IP 주소와 송신처 IP 주소, 그리고 UDP 헤더에 기록되어 있는 수신처 포트 번호와 송신처 포트번호라는 네 항목과 소켓에 기록된 정보를 결합하여 데이터를 건네줄 대상 애플리케이션을 판단하고 여기에 데이터를 건네주기만 함
UDP 헤더(8바이트)
필드 명칭 | 길이(비트) | 설명 |
송신처 포트 번호 | 16 | 이 패킷을 송신한 측의 포트 번호 |
수신처 포트 번호 | 16 | 이 패킷을 건네줄 상대의 포트 번호 |
데이터 길이 | 16 | UDP 헤더 이후의 길이 |
체크섬 | 16 | 오류 유무를 검사하기 위한 것 |
음성 및 동영상 데이터
- 음성이나 영상 데이터는 결정된 시간 안에 데이터를 건네주어야 함. 지연되면 타이밍 맞지 않아서 데이터 도착해도 쓸모가 없음
- 음성, 영상에는 데이터가 다소 없어도 치명적인 문제가 되지 않는 성질이 있음
- 이와 같이 다시 보낼 필요가 없거나 다시 보내도 쓸모가 없으면 단순히 UDP로 데이터를 보내는 쪽이 더 효율적임