コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
TCP と UDP の違い
TCP と UDP の違い とは
信頼性重視の TCP と速度重視の UDP の使い分けを理解します。本レッスンでは、TCP と UDP の違い の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
このレッスンで学ぶこと
トランスポート層の代表プロトコル TCP と UDP の違いを学びます。「信頼性 vs 速度」というトレードオフを掴むと、Web 以外のプロトコル選定の見通しが良くなります。
TCP と UDP の位置づけ
TCP (Transmission Control Protocol) と UDP (User Datagram Protocol) は、両方とも IP (ネットワーク層) の上で動くトランスポート層プロトコルです。ポート番号でアプリを識別するところまでは同じ。違うのはその先の保証レベルです。
| 観点 | TCP | UDP |
|---|---|---|
| 接続 | コネクション型 (事前に確立) | コネクションレス (いきなり送る) |
| 信頼性 | 到達保証あり (再送・順序保証) | 保証なし (送りっぱなし) |
| 速度 | 遅め (オーバーヘッド大) | 速い (オーバーヘッド最小) |
| 順序 | 並び替え保証 | 保証なし |
| 用途 | HTTP, HTTPS, SSH, SMTP | DNS, 動画ストリーミング, ゲーム |
TCP の特徴
TCP は「絶対に届く・順番通りに届く」を保証するプロトコルです。
- コネクション確立 (3-way ハンドシェイク) — 通信前に SYN/SYN-ACK/ACK で握手し、お互いの準備を確認する。
- シーケンス番号 — 各セグメントに番号を振り、受信側で順番に並び替える。
- ACK と再送 — 受信側が ACK を返し、一定時間内に来なければ送信側が再送する。
- 輻輳制御 — ネットワーク混雑時に送信スピードを自動調整する。
おかげで、TCP を使う限り「届かなかった」「ぐちゃぐちゃの順番で届いた」を気にする必要がありません。HTTP がそのまま TCP に乗っているのも、信頼性をプロトコル側に任せられるからです。
UDP の特徴
UDP は「送りつけて終わり」のシンプルなプロトコルです。
- 接続確立なし — いきなりパケットを送る。
- 再送なし — 失われたパケットは諦める。
- 順序保証なし — 届いた順がそのまま。
- ヘッダー最小 — 8 バイト (TCP は最低 20 バイト)。
「信頼性を捨てて速度を取る」設計です。届かない可能性はアプリ側で対処する前提です。
「信頼性は上の層で」という設計思想
UDP は信頼性を担保しないからこそ、必要なところだけ上の層で実装できる柔軟性があります。QUIC (HTTP/3 の下位プロトコル) は UDP の上に独自の信頼性機構を載せ、TCP より高速化を達成しています。
どちらを選ぶか
ざっくり下記の基準で選びます。
- 「データが欠けたら困る」「順番が重要」→ TCP
- 「リアルタイム性が最重要」「データの一部が落ちても許容できる」→ UDP
HTTP/HTTPS、メール、ファイル転送、SSH、Git push などは全部 TCP。一方で DNS、動画/音声ストリーミング、オンラインゲーム、VoIP、IoT センサーは UDP が中心です。
動画と UDP
動画配信で UDP が選ばれるのはなぜでしょうか。動画は 1 フレーム落ちても次のフレームで補完できますが、TCP のように落ちたパケットを再送する仕組みだと「過去の落ちたフレームを待っている間、現在の映像が固まる」ことになります。
UDP なら、落ちたフレームは諦めて次へ進めるので、映像のラグが小さくなります。Zoom や YouTube Live、Netflix の一部などが UDP ベースのプロトコル (WebRTC, SRT, QUIC など) を採用しているのはこのためです。
ゲームと UDP
オンラインゲームも UDP が主流です。位置情報を 30 回/秒、60 回/秒と送り続けるので、1 つのパケットが落ちても次のパケットで補完できます。再送を待つ TCP では「動きがカクつく」ので、UDP + 独自プロトコルでリアルタイム性を確保します。
TCP の上に作った人工的な遅延
TCP は「順序保証」のために、先のパケットが届いていても前のパケットが届くまで上位層に渡しません。これを Head-of-Line Blocking と呼び、リアルタイム用途で大きな問題になります。HTTP/3 が QUIC (UDP ベース) に乗り換えたのは、まさにこの問題を解消するためです。
まとめ
TCP は信頼性重視、UDP は速度重視。Web のほとんどは TCP に乗っていますが、リアルタイム性が要求されるシーンでは UDP がスタンダードです。HTTP/3 の登場で、Web の世界も少しずつ UDP ベースに移行しはじめています。次のレッスンでは、TCP の代名詞である 3-way ハンドシェイクを掘り下げます。
次のレッスン
次は 3-way ハンドシェイク で、信頼性重視の TCP と速度重視の UDP の使い分けを理解します を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- TCP vs UDP の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. TCP vs UDP とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
復習ミニクイズ
UDP が選ばれる典型的なユースケースはどれですか