ひとことで言うと
UDPは、相手への到着確認をしないかわりに、高速にデータを送り続けることを優先した通信方式です。
通信には「確実に届けること」と「速く届けること」のトレードオフがあります。 UDPは後者を選んだ方式で、確認の手間を省くことで遅延を最小限に抑えます。 動画ストリーミングやオンラインゲーム、DNS問い合わせなど、「少し欠けても速さが大事」な場面で使われます。
たとえ話でもう少し詳しく
UDPは、チラシのポスティングに近いです。
- 配達員は各ポストにチラシを投函し、読まれたかどうかは確認しない
- 受け取れなかった家があっても、配達員は気づかずに次へ進む
- その分、短時間に大量のチラシを配れる
動画の再生や音声通話では、1パケット程度の欠けがあっても映像や音声はほぼ問題なく続きます。 そこで確認の往復をなくし、とにかく速く流し続けるUDPが活きます。 一方、途中でデータが失われても困らないよう、アプリ側で工夫することが多いです。
よく出る場面・使いどころ
- 動画・音声のストリーミング配信
- オンラインゲームでの位置・操作の同期
- DNSの名前解決(名前からIPアドレスを調べる問い合わせ)
- IoTセンサーからの定期的なデータ送信
似た言葉との違い
- TCP
- データの到着を確認しながら、確実に順番通り届ける通信方式
- UDPは確認を省いて速さを優先する
- パケット
- データを小さく分割した送受信の単位
- UDPではパケットが届かなくても再送しない
- HTTP
- WebページやAPIのやりとりに使うプロトコル
- HTTPはTCPの上で動くが、最新版(HTTP/3)はUDPベースの仕組みを採用している
実務で気にするポイント
- データが届かなかったときの対処はアプリ側で設計する
- 順番の入れ替わりが起きても動く仕組みが必要
- セキュリティ対策(認証・暗号化)もアプリ側で追加する必要がある
- 大量に送ると帯域を占有しやすいため、送信レートを制御することが多い
注意: UDPは「速くて軽い」ですが、信頼性はありません。ファイル転送や決済処理など、1ビットたりとも欠けてはいけないデータには向きません。用途に応じてTCPとUDPを選び分けることが大切です。