【特 徴】
TCPと同様、トランスポート層で動作するプロトコルです。
UDPの通信では、データを送信するコンピュータ側が、受信する側のコンピュータに一方的にデータを送り付けます。また送信する側が、受信する側のコンピュータがきちんとデータを受け取れたかを確認する機能がないです。受信側にはきちんとすべてのデータが受け取れたのかを、チェックサムというUDPヘッダの情報を用いて確認できます。
ネットワーク層(L3)とセッション層(L5)以上で動作するプロトコルとの橋渡しを行う。
(例)DNS、NTP、DHCP、SNMPなど
一見UDPはあまり良くないものに感じますが、データの確認をするフェーズがないことによって、データの送受信に関わる手間が削減されるので、それにより効率的かつ高速性が図れます。
つまりTCPと違い、正確性を重視しないわけです。
UDPは別名「コネクションレス型」と呼ばれます。
【ヘッダの中身】
UDPヘッダ + データ(ペイロード)のことをUDPセグメントと呼びます。
ヘッダの中身(フィールド)は以下の通り
フィールド名 (ビット数) |
フィールドの説明 |
送信元ポート番号 (16bit) |
送信元ポート番号の値 ※1 |
宛先ポート番号 (16bit) |
宛先ポート番号の値 ※1 |
ヘッダ長 (16bit) |
UDPヘッダの全体の長さを表す値 |
チェックサム (16bit) |
UDPヘッダとデータ部分のエラーチェックを行う |
※1: ポート番号の詳細 (0~65535)
ポート番号のタイプ |
ポート番号の範囲 |
説明 |
ウェルノウンポート |
0~1023 |
サーバのアプリケーションに割り当てられるポート |
登録済みポート |
1024~49151 |
独自に作成したアプリケーションに割り当てられるポート |
ダイナミックポート |
49152~65535 |
クライアント側のアプリケーションに自動的に割り当てられるポート |
【用 途】
・音声通信
・ストリーミング
>>
リアルタイム性を重視するデータを転送する場合は、TCPのようなデータを送るごとに確認をするよりは、UDPで効率化かつ高速性を保つ方が、結果サービスの品質高まります
・マルチキャスト通信など
>>
TCP通信は1対1の通信のみでしかコネクションを確立できない。同じパケットに対して複数人と1つ1つコネクションを確立するのは非効率なので、そこでUDPを使用したマルチキャスト通信を行う。
・少量のデータ (信頼性が不必要な場合)
>>>
DNS、DHCPなどはクライアントとサーバ間で2回(要求・応答)のやりとりで終了するので、TCPでの3回のやりとり(3ウェイハンドシェイク)をするのは非効率なので、UDPを使用する。
このことからわかるように、UDPは効率化や高速性を重視します。