UDP
UDP
接続を確立せず、確認も再送もしない高速・低遅延のプロトコル。順序入れ替わりや欠落はありうる。音声・動画・ゲームなど『多少欠けても速さが命』の用途向き。
たとえ話: ハガキの投函
UDPはハガキを投函するだけです。相手に届いたかの確認(ACK)もなく、届かなくても再送しません。順番もバラバラに届くかもしれません。その代わり、握手も確認もない分速くて軽い。
図を描画中...
TCPの『書留(確実だが遅い)』に対し、UDPは『ハガキ(速いが届く保証なし)』と覚えると対比が効きます。
なぜリアルタイムに向くのか(核心)
ビデオ通話を想像してください。映像の1フレームが届かなかったとき、TCPなら『再送して順番を待つ』ので、その間映像が固まります。会話のテンポが崩れて致命的。
UDPなら欠けたフレームは諦めて次へ進みます。一瞬画質が乱れても、会話は途切れずに流れます。リアルタイム通信では『古いデータが遅れて届く』ことは『データが欠ける』ことより悪いのです。だからUDPが選ばれます。
図を描画中...
いつUDPを選ぶか
- 最低レイテンシが必要。
- 遅延データはデータ損失より悪い(古い情報が今さら届いても無意味)。
- 独自のエラー訂正を自分で実装したい。
用途例: VoIP(音声通話)、ビデオチャット、ライブストリーミング、リアルタイム多人数ゲーム。さらにブロードキャスト(一斉配信、DHCP等)もUDPの得意分野です。
つまずきポイント
- UDPの『信頼性がない』は欠陥ではなく、速度のための意図的な割り切り。用途が合えば最適解。
- 『どうしても一部は確実に届けたい』場合は、UDPの上にアプリが独自に最小限の再送・順序制御を載せることもある(QUICなどはこの発想)。
- TCP/UDPの選択は『確実さ(TCP) vs 速さ(UDP)』。何を犠牲にできるかで決める。