UDPは、相手に届いたかを確認しないかわりに、データをすばやく送り続けることを優先した通信方式です。チラシのポスティングに似ていて、配達員は各ポストにチラシを入れたら、読まれたかどうかを確かめずに次へ進みます。受け取れなかった家があっても気づかない。その代わり、短い時間で大量に配れます。
通信には、確実に届けることと速く届けることのトレードオフがあります。確認を重ねて確実さを取る TCP に対して、UDP は確認の往復をなくして遅延を小さくするほうを選んでいます。
使われているのは、少しくらい欠けても速さのほうが大事な場面です。動画や音声のストリーミング、オンラインゲームでの位置や操作の同期、IoT センサーからの定期的なデータ送信。ドメイン名からIPアドレスを調べる DNS の問い合わせにも UDP が使われます。動画や通話では、パケットが1つ欠けたくらいでは映像や音声はほぼ問題なく続くので、確認を待つより流し続けるほうが自然に見えます。Webでは、最新版の HTTP/3 が UDP をベースにした仕組みを採用しています。
欠けた分の面倒はアプリが見る
UDP そのものは、届かなかったデータを送り直しません。順番が入れ替わっても並べ直しません。だから、その面倒はアプリの側で見る必要があります。
- データが届かなかったときにどうするかを決める
- 順番が入れ替わっても動くように作る
- 認証や暗号化といったセキュリティ対策を加える
- 大量に送ると回線の帯域を占有しやすいので、送る速さを制御する
ファイルの転送や決済の処理のように、1ビットでも欠けたら困るデータには向きません。TCP との使い分けは、TCPとUDPの違いでも整理しています。