確認を省いて速く送るUDP

UDPは、到着確認をせずにデータをすばやく送り続けるシンプルな通信方式です。

UDPは、相手に届いたかを確認しないかわりに、データをすばやく送り続けることを優先した通信方式です。チラシのポスティングに似ていて、配達員は各ポストにチラシを入れたら、読まれたかどうかを確かめずに次へ進みます。受け取れなかった家があっても気づかない。その代わり、短い時間で大量に配れます。

通信には、確実に届けることと速く届けることのトレードオフがあります。確認を重ねて確実さを取る TCP に対して、UDP は確認の往復をなくして遅延を小さくするほうを選んでいます。

使われているのは、少しくらい欠けても速さのほうが大事な場面です。動画や音声のストリーミング、オンラインゲームでの位置や操作の同期、IoT センサーからの定期的なデータ送信。ドメイン名からIPアドレスを調べる DNS の問い合わせにも UDP が使われます。動画や通話では、パケットが1つ欠けたくらいでは映像や音声はほぼ問題なく続くので、確認を待つより流し続けるほうが自然に見えます。Webでは、最新版の HTTP/3 が UDP をベースにした仕組みを採用しています。

欠けた分の面倒はアプリが見る

UDP そのものは、届かなかったデータを送り直しません。順番が入れ替わっても並べ直しません。だから、その面倒はアプリの側で見る必要があります。

  • データが届かなかったときにどうするかを決める
  • 順番が入れ替わっても動くように作る
  • 認証や暗号化といったセキュリティ対策を加える
  • 大量に送ると回線の帯域を占有しやすいので、送る速さを制御する

ファイルの転送や決済の処理のように、1ビットでも欠けたら困るデータには向きません。TCP との使い分けは、TCPとUDPの違いでも整理しています。