UDP

UDPとは

UDP(User Datagram Protocol)は、[[TCP/IP]] のトランスポート層で使われるプロトコルの1つで、確認応答なしにデータを送りっぱなしにするのが特徴です。「届いたかどうか」を確かめる手続きを省くぶん、軽くて速い通信ができます。

同じ層の TCP が「電話」(相手とつながってから話す)だとすると、UDP は「ハガキ」(投函したら届くのを祈る)にたとえられます。

TCPとの比較

UDPTCP
接続の確立しない(コネクションレス)する(3ウェイハンドシェイク)
到達保証・再送なしあり
順序保証なしあり
速度・オーバーヘッド軽くて速い制御のぶん重い
向く用途リアルタイム通信・小さな問い合わせ確実に届けたい通信全般

UDPは「多少欠けても、遅れて届くより今届く方が大事」な用途で選ばれます。

UDPが使われている場所

  • [[DNS]] の名前解決 — 小さな問い合わせと応答が1往復で済むため、接続確立のコストが割に合わない
  • [[DHCP]] — まだIPアドレスを持たない端末がブロードキャストでやり取りする
  • 音声通話・ビデオ会議・オンラインゲーム — 途切れた部分を再送してもらっても手遅れなので、欠けは捨てて先へ進む
  • QUIC([[HTTP/2とHTTP/3]] のHTTP/3) — UDPの上に再送や暗号化を独自実装し、TCPより速い接続を実現している

最後のQUICが象徴的で、「保証がない」ことは欠点ではなく、必要な保証をアプリ側で自由に設計できる土台にもなっています。

初学者向けポイント

  • 到達保証がないため、UDPを使うアプリは「欠けたらどうするか」を自分で決めている(捨てる・自前で再送するなど)
  • [[ファイアウォール]] の設定ではTCPとUDPは別物として扱われる — 「ポートは開けたのに繋がらない」時はプロトコルの指定違いを疑う
  • プログラムからは [[ソケット通信]] のデータグラムソケットとして扱う

関連技術とのつながり

  • [[TCP/IP]] — UDPはTCPと並ぶトランスポート層の主要プロトコル
  • [[DNS]] — UDPの代表的な利用例。1往復の軽い問い合わせに最適
  • [[DHCP]] — アドレス取得前の端末が使えるのもUDPだから
  • [[HTTP/2とHTTP/3]] — HTTP/3はUDP上のQUICで動く
Q: UDPの特徴として正しいのはどれ?
- [ ] 3ウェイハンドシェイクで接続を確立してから通信する
- [x] 確認応答なしにデータを送りっぱなしにするため軽くて速い
- [ ] 到達順序を必ず保証する
解説: 接続確立や到達・順序の保証はTCPの特徴です。UDPはそれらを省いて軽さと速さを得ています。

Q: UDPが向いている用途として本文で挙げられているのはどれ?
- [x] 音声通話やオンラインゲームなどのリアルタイム通信
- [ ] ファイルを1バイトも欠けずに転送したい場合
- [ ] 到達保証をプロトコル任せにしたい場合
解説: 「遅れて届くより今届く方が大事」な用途がUDP向きです。確実な転送はTCPの領分です。

Q: HTTP/3の土台となっているQUICについて、本文の説明と合うものはどれ?
- [ ] TCPの上に構築されている
- [ ] 再送を一切行わないプロトコルである
- [x] UDPの上に再送や暗号化を独自実装している
解説: QUICはUDPを土台に、必要な保証をアプリケーション側で実装し直すことでTCPより速い接続を実現しています。