UDPとコネクションレス型トランスポート
ユーザーデータグラムプロトコル(UDP)は、インターネットの軽量なコネクションレス型トランスポートであり、IPのベストエフォート型サービスにプロセス多重化とオプションのチェックサムをわずかに追加するのみである。そのため、アプリケーションは信頼性の保証と引き換えに、最小限のオーバーヘッドと遅延で利用できる。
Definition
ユーザーデータグラムプロトコル(UDP)は、コネクションレス型のトランスポート層プロトコルであり、プロセス間でベストエフォート型のメッセージ指向配信を提供する。ポートベースの多重化とオプションのチェックサムをネットワーク層に追加するが、信頼性、順序付け、フロー制御、輻輳制御は提供しない。
Scope
このトピックでは、コネクションレス型トランスポートについて扱う。具体的には、UDPセグメントのフォーマット、ポート番号を介した多重化と逆多重化、オプションのチェックサム、そしてアプリケーションがTCPよりもUDPを選択する理由(接続設定の遅延がないこと、輻輳制御によるスロットリングがないこと、送信内容とタイミングに対するより詳細な制御、パケットあたりのオーバーヘッドが小さいこと)である。また、典型的なUDPベースのアプリケーションと、信頼性やレート制御といったアプリケーションに移行する責任についても概観する。TCPの信頼性および輻輳制御のメカニズムは対象外とする。
Core questions
- UDPはIPの上にどのような最小限のサービスを追加するのか?
- UDPはポート番号を使用してどのようにデータを多重化および逆多重化するのか?
- アプリケーションがTCPよりもUDPを好むのはなぜか?
- UDPを使用する場合、信頼性やレート制御といったどのような責任がアプリケーションに移行するのか?
- どのような種類のアプリケーションが一般的にUDPを使用するのか?
Key concepts
- コネクションレス型サービス
- データグラム(メッセージ)指向
- UDPセグメントフォーマット
- ポートベースの多重化/逆多重化
- オプションのチェックサム
- 低オーバーヘッドと低遅延
- 輻輳制御なし
- アプリケーション層の信頼性
Key theories
- 最小限のコネクションレス型サービス
- UDPは、IPのベストエフォート型データグラムサービスを、ポートによる多重化とオプションのチェックサムを追加するのみで、ほとんど変更せずにアプリケーションに公開する。そのため、セットアップ、状態管理、自動回復の機能がなく、保証と引き換えにシンプルさと低遅延を提供する。
- アプリケーション制御型トランスポート
- TCPの輻輳制御と信頼性を回避することで、UDPはアプリケーションにタイミングと再送内容に対する直接的な制御を与える。これはリアルタイムプロトコルやカスタムプロトコルに適しているが、アプリケーションは損失処理とネットワークの過負荷回避を自ら行う責任を負う。
Clinical relevance
UDPは、保証された配信よりも低遅延や詳細な制御が重要となるサービスを支えている。例えば、DNSルックアップ、リアルタイム音声およびビデオ、オンラインゲーム、ネットワーク管理などである。QUICなどの新しいトランスポートは、TCPの制約を回避しつつトランスポートを制御するためにUDPの上に構築されており、コネクションレス型トランスポートは現代の低遅延ネットワーキングの中心となっている。
History
UDPは、TCPとIPが別々のプロトコルとして分離された際、TCPのメカニズムを必要としないアプリケーションのための最小限のトランスポートとして、RFC 768(1980年)で規定された。その内容は本質的に変更されておらず、遅延に敏感なアプリケーションが普及し、開発者がQUICプロトコルを含む新しいトランスポート機能をその上に構築するにつれて、その役割は拡大している。
Key figures
- Jon Postel
- James F. Kurose
- Keith W. Ross
Related topics
Seminal works
- rfc768
- kurose2021
Frequently asked questions
- UDPが信頼性に欠けるなら、なぜそれを使用するのか?
- 多くのアプリケーションにとって、完璧な配信よりも高速な配信が重要である。リアルタイムの音声やビデオは、時折の損失は許容できるが遅延は許容できない。DNSは迅速な単一交換クエリから恩恵を受け、一部のアプリケーションは独自の信頼性メカニズムを実装している。UDPのセットアップ不要と輻輳スロットリングの欠如は、より低い遅延とより多くの制御をそれらに与える。
- UDPはIPを超えて何かをするのか?
- はい、しかしわずかである。UDPは、データがホスト上の正しいアプリケーションプロセスに到達するようにポート番号を追加し(多重化と逆多重化)、破損を検出するためのオプションのチェックサムを追加する。それ以外は、IPのベストエフォート型、コネクションレス型配信をそのままにしている。