Mímisbrunnr知恵の泉

← コンピュータネットワーク 一覧

🎓 レベル:基礎 | 重要度:A(必須) 📎 前提:TCP(3ウェイ・再送・フロー制御)

要点(BLUF)

UDPは何をしないか

TCPが提供する機能のうち、UDPが省くものを並べると性格が分かります。

機能TCPUDP
コネクション確立あり(3ウェイ)なし
順序保証ありなし
再送・確認応答ありなし
フロー/輻輳制御ありなし
ヘッダ長20バイト〜8バイト
1対多不可可(マルチキャスト等)

UDPヘッダは送信元ポート・宛先ポート・長さ・チェックサムだけ。チェックサムで壊れを検出はしますが、壊れていたら黙って捨てるだけで再送はしません。

graph LR
  A["送信アプリ"]
  B["UDP:ポートを付けて即送信"]
  C["IP:ベストエフォートで配送"]
  A --> B --> C

なぜ「信頼性なし」を選ぶのか(設計の直観)

リアルタイム音声を考えます。0.5秒前の音声パケットが今ごろ再送で届いても、もう再生時刻は過ぎていて無価値です。遅れて正しいより、欠けても今すぐの方が価値が高い。TCPの再送・順序保証はこういう用途ではむしろ害になります。だからUDPは「最低限だけやって、必要な信頼性はアプリが自分の都合で実装する」という割り切りをします。実際、HTTP/3はUDP上にQUICで独自の信頼性と多重化を載せ、TCPの制約(先頭ブロッキング等)を回避しています。

代表的な用途

TCPとUDPの選び方

graph TD
  Q["この通信に必要なのは?"]
  Q -->|"完全性・順序が必須(ファイル・Web・メール)"| T["TCP"]
  Q -->|"低遅延・1対多・小さな問い合わせ"| U["UDP"]

「壊れたら困るか、遅れたら困るか」で分けるのが実務の判断軸です。

⚠️ よくある誤解

対応 lab

関連