🧠【初心者向け】TCP と UDP の違いをやさしく解説(図解あり)
ネットワークプログラミングを学ぶと
必ず出てくるのが TCP と UDP の違いです。
でも、初心者はここでつまずきがち。
- TCPとUDPの役割ってなに?
- どっちが「速い」の?
- どっちが「安全」なの?
- Javaで使うときどう選ぶの?
- HTTPはどっち?
この記事では
宅配便の例え × 図解 × ネットワーク層 × Java実務視点
で、TCPとUDPを直感的に理解できるように解説します。
✨ 結論
✔ TCPは「確実に届ける宅配便」、UDPは「とにかく速い投げ込み郵便」
✔ TCPは信頼性・順序保証・再送がある
✔ UDPは軽量・低遅延でリアルタイム向き
✔ HTTP/HTTPS は TCP の上で動く
✔ ゲーム・音声通話・動画配信は UDP が多い
TCP と UDP とは?(まずは役割から)
TCP/UDP は OSI参照モデルでいう「トランスポート層」のプロトコル。
アプリ間通信の“送り方”を決める仕組みです。
▼ 例えるなら…
- TCP → クロネコヤマト(必ず届ける)
- UDP → ポスト投函(速いけど保証なし)
TCP の特徴(宅配便のイメージ)
TCPは “信頼性重視” のプロトコル。
✔ 順序が保証される
✔ 途中で欠けても再送される
✔ 相手の受信を確認しながら進む
✔ コネクションを確立する(三者間ハンドシェイク)
🔹 図解(短線版)
Sender ── SYN ──►
◄── SYN+ACK ──
Sender ─── ACK ──►
UDP の特徴(速さ重視の投げ込み方式)
UDP は “速度” と “低オーバーヘッド” が最優先。
✔ 順序保証なし
✔ 配信保証なし
✔ 再送なし
✔ コネクション確立なし(いきなり送る)
🔹 図解(短線版)
Sender ───► Receiver
(届くとは限らない)
TCP と UDP の比較表(これだけで理解できる)
| TCP | UDP | |
|---|---|---|
| 保証 | あり | なし |
| 順序 | 保証される | されない |
| 再送 | あり | なし |
| 速度 | 遅め | 超高速 |
| 利用例 | HTTP, HTTPS, メール | ゲーム, 動画, 音声通話 |
TCP は「信頼性の仕組み」が豊富(内部構造)
✔ 再送制御(Retransmission)
✔ 輻輳制御(Congestion Control)
✔ フロー制御(Flow Control)
🔹 TCPがやっていること(図解)
[届いた?] ─→ Yes → 次送る
[届いた?] ─→ No → 再送!
UDP はアプリ側で必要な処理を書くこともある
UDP は軽量なため、
不足部分をアプリ側で補填する場合もあります。
例:
- リトライロジック
- シーケンス番号(順序制御)
- 再送管理
ゲームやリアルタイム通信でよく使われるテクニックです。
Java ではどう使い分けるのか?
✔ TCP → Socket / ServerSocket
例:REST API, Webアプリ, DB通信
✔ UDP → DatagramSocket / DatagramPacket
例:ゲーム、IoTデバイス、ストリーミング
ここまでのまとめ(初心者向け)
- TCPは「確実に届ける宅配便」
- UDPは「とにかく速い投げ込み郵便」
- HTTPはTCPの上で動く
- 動画・通話・ゲームはUDPが多い
- Javaでは Socket(TCP)と DatagramSocket(UDP)で扱う
Deep Friendly Tech の一言(後書き)
TCP と UDP の本質を理解すると、
“プロトコルの選定理由” が見えてきます。
特に現代のアプリは
リアルタイム性 × 信頼性 × メモリ効率 のバランスが重要。
通信まわりの理解は
中級エンジニアへの大きなステップになります。

コメント