用語辞典・通信プロトコル

UDP

UDPとは

UDPは、接続確立や再送を標準では行わず、低い遅延と小さな処理負荷を重視するトランスポート層プロトコルです。正式名称はUser Datagram Protocol(ユーザー・データグラム・プロトコル)で、ユーディーピーと読みます。

送信アプリが渡した一まとまりのデータへ、送信元・宛先ポートなどの短いヘッダーを付け、IPへ渡します。受信側では一つのデータグラムを一つの単位としてアプリへ渡すため、TCPの連続バイト列と違って送信時のメッセージ境界が保たれます。

UDPは「必ず失敗する通信」ではなく、到着確認・順序修正・再送・流量調整をUDP自身では約束しない最小限の配送サービスです。必要な信頼性と期限をアプリケーションが用途に合わせて設計できます。

独立したデータグラムを、接続の事前交渉なしにポートからポートへ渡す損失回復や期限管理を必要とする場合は、アプリ側の処理として追加する
送信アプリから四つの独立したデータグラムがポートを通り、一つは到着、一つは途中で失われ、二つは順序が入れ替わって受信側へ届く様子と、UDPの外側にあるアプリのタイマー・再送判断、経路サイズの門、チェックサムを示した図解
図1色の違いは別々のデータグラムを表します。損失・順序逆転は起こり得る結果であり、図の割合で発生するという意味ではありません。

一つのデータグラムに、一つの短いヘッダーを付ける

基本ヘッダーは四項目。配送以外の機能をアプリへ残す軽いヘッダーと、アプリが負う責任を一組で理解する
Sourceポート送信元ポート

返信先を識別する番号。利用しない場合の扱いはIP版と仕様で確認する

Destinationポート宛先ポート

受信ホスト内のどのアプリ・ソケットへ渡すかを示す

Length長さ

UDPヘッダーとデータを合わせたデータグラム長を示す

Checksumチェックサム

ヘッダー、データ、IP情報の一部を使い、伝送誤りを検出する

Not included順序・再送はない

番号付け、確認応答、タイマー、重複排除は用途に応じアプリが持つ

Still 必須混雑へ配慮する

再送がなくても無制限に送ってよいわけではなく、送信量を制御する

図2基本UDPヘッダーは8バイトです。UDP上の各プロトコルが、さらに独自の識別子や番号をデータ部へ置くことがあります。

未着、重複、順序逆転を前提に、必要な性質だけを足す

途中の混雑、経路変更、チェックサム誤りなどで、データグラムが届かないことがあります。送信側には標準の確認応答がないため、届いたかをUDPだけから知ることはできません。同じデータグラムを再送すれば重複して届く可能性もあります。

音声通話では、期限を過ぎた音声を再送して待つより次の音声を再生する方が自然な場合があります。一方、名前解決やゲーム操作では問い合わせ番号、応答、期限、再試行を上位プロトコルが定めます。「再送するか」ではなく、何秒後まで価値があるデータか、重複時に同じ処理を二度行わないかまで設計します。

データグラムを大きくしすぎると、分割・損失の影響が増える

UDPはアプリの一まとまりを一つのIPデータグラムとして送ります。経路のMTUを超えると、IPv4では断片化されることがあり、IPv6では途中ルーターが断片化しません。断片の一つでも失うと、元のデータグラム全体を復元できません。

送信側でPath MTU DiscoveryやPacketization Layer PMTU Discoveryを用い、プロトコルが許す大きさへ分けます。「UDPなら一度に巨大なデータを送れる」と考えず、IP・UDPヘッダーやトンネル分の余白も見込みます。

チェックサムは誤り検出であり、暗号学的な改ざん防止ではない

UDPチェックサムは、ポート、長さ、データに加え、送信元・宛先IPなどを擬似ヘッダーとして計算へ含めます。IPv4 UDPではゼロ値で未使用を表せますが、IPv6では原則として必須で、限定的な例外だけが別仕様で定められます。

偶発的なビット誤りを検出する仕組みであり、攻撃者による書き換え、盗聴、送信者の身元を防ぎません。機密性と認証が必要なら、QUICなど暗号保護を組み込んだ上位方式を使います。

接続がないことと、状態がないことは同じではない

UDPヘッダーにはTCPの接続確立・終了状態がありません。しかしNAT、ファイアウォール、サーバー、アプリは送信元と宛先の組を記録し、返信可能時間や利用者の状態を管理できます。UDPを使えば中間装置の状態がなくなるわけではありません。

DNS、時刻同期、音声・映像、オンラインゲームなどで使われますが、用途名だけでUDPを選ぶのではありません。許容損失、順序、期限、再送、輻輳制御、最大サイズ、認証をプロトコル全体で満たせるかを判断します。QUICもUDP上で動きますが、QUIC自身が信頼性・暗号化・輻輳制御を追加します。

仕様の確認資料:RFC 768「User Datagram Protocol」、RFC 8085「UDP Usage Guidelines」、RFC 8200「IPv6 Specification」

関連用語