UDPはコネクションレス型のプロトコルです。
コネクションレスとはつまり、TCPのように通信開始前に3ウェイハンドシェークによるコネクションの確立を行わないということです。
UDPは、TCPのような信頼性は提供されませんが、アプリケーションどうしが「最小限のしくみ」によって、データを効率よくやり取りする手段を提供しています。
そのため、UDPのヘッダ構造はTCPヘッダと比べてとてもシンプルです。
フィールド | 説明 |
---|---|
送信元ポート番号、宛先ポート番号 | 16ビットのフィールドで、送信元と宛先のプロセスを識別するための番号。0~65535の範囲の値で使用される。 |
UDPデータグラム長 | 16ビットのフィールドで、UDPヘッダとデータのサイズをバイト単位で表す。 |
チェックサム | 16ビットのフィールドで、エラーチェックを行うための値がセットされる。 |
UDPの特徴
UDPは、TCPで行っているフロー制御、再送制御、順序制御などは一切行いません。そのため、たとえネットワークが混雑していても要求があればそのまま送り、パケットの再送も行いません。そのような制御が必要な場合は、アプリケーションやユーザーが考慮する必要があります。
ただ、処理が単純なため、高速な通信が可能になります。特に、送信するパケット量が少ない通信の場合、コネクション確立のパケットを送信する時間などの影響が割合的に大きくなるため、それらを必要としないUDPでは、より高速化を実感できます。
下表にUDPが採用されるケースをまとめます。
プロトコルの特徴 | 例 |
---|---|
アプリケーションで信頼性を確保するもの | TFTP(簡易ファイル転送プロトコル) |
通信パケットが小さいもの | DNS、SNMP、NTP |
信頼性よりリアルタイム性が重視されるもの | RTPなどの動画、音声ストリーム配信 |
マルチキャスト、ブロードキャスト配信が必要なもの | DHCP、RIP |