UDP は、基本的なトランスポート層の機能を提供するシンプルなプロトコルです。 UDP のオーバーヘッドが TCP よりもずっと小さいのは、UDP がコネクション型ではなく、信頼性を確保するための高度な再送信メカニズムやシーケンシング メカニズムやフロー制御メカニズムを備えていないからです。
このことは、UDP を使用するアプリケーションの信頼性が常に低いことを意味するわけではありませんし、UDP が粗悪なプロトコルであるという意味でもありません。 そうではなく、トランスポート層プロトコルがこれらの機能を提供しないため、必要に応じて他の場所で実装する必要があることを意味するにすぎません。
一般的なネットワークにおける UDP トラフィックの総量は比較的少ないのですが、UDP を使用する主要なアプリケーション層プロトコルには次のものがあります。
- DNS(Domain Name System; ドメイン ネーム システム)
- SNMP(Simple Network Management Protocol; シンプル ネットワーク管理プロトコル)
- DHCP(Dynamic Host Configuration Protocol; ダイナミック ホスト コンフィギュレーション プロトコル)
- RIP(Routing Information Protocol; ルーティング インフォメーション プロトコル)
- TFTP(Trivial File Transfer Protocol; トリビアル ファイル転送プロトコル)
- IP テレフォニーまたは Voice over IP(VoIP)
- オンライン ゲーム
オンライン ゲームや VoIP など、一部のアプリケーションでは、ある程度のデータ消失を許容できます。 これらのアプリケーションで TCP を使用した場合、TCP がデータ消失を検知して、データを再送信している間、大規模な遅延が発生する可能性があります。 このような遅延が発生すると、アプリケーションのパフォーマンスに対する悪影響は、小規模なデータ消失よりも大きなものになります。 DNS など、一部のアプリケーションは、応答がなければ単純に要求を再試行します。したがって、メッセージ配信を保証するために TCP に頼る必要がありません。
このようなアプリケーションには、オーバーヘッドの小さい UDP が最適です。