メインコンテンツへスキップ

TCPとUDP

🌐はじめに

この記事では、インターネット通信に欠かせない2つのプロトコル、UDPTCPの違いを中心に解説します。

両者は同じ「トランスポート層」のプロトコルですが、目的も使われ方も異なります。それぞれの特性を理解することで、ネットワーク設計・アプリ開発・パフォーマンスチューニングなどに活かせる知識となります。


📦TCPとUDPの共通点

  • 両方ともトランスポート層のプロトコル(OSIモデルの第4層)

  • IPアドレスとポート番号を用いて通信先を特定

  • **ポート番号(0〜65535)**によってアプリケーションを識別

  • データの単位はセグメント(TCP)またはデータグラム(UDP)


🔁TCPの特徴:信頼性重視の通信

✅ 特徴

項目 内容
コネクション 接続確立(3-way handshake)必要
信頼性 高い(確認応答、再送制御あり)
データ順序 保証される(順序制御)
輻輳制御 あり
ヘッダサイズ 大(20バイト以上)
代表的用途 Web(HTTP/HTTPS)、メール(SMTP/IMAP)、ファイル転送(FTP)

✅ 利点と適した場面

  • 確実に届けたいデータ:テキスト、ファイル、Webページ

  • データが途中で壊れたり欠けたりしないことが重要な場合

⚠️ 注意点

  • 通信開始時にコネクション確立が必要なため、レイテンシが高い

  • ヘッダが大きく、通信オーバーヘッドが大きい


🚀UDPの特徴:速度重視・シンプルな通信

✅ 特徴

項目 内容
コネクション 不要(接続レス)
信頼性 低い(確認応答なし、再送なし)
データ順序 保証されない
輻輳制御 なし
ヘッダサイズ 小(8バイト)
代表的用途 DNS、動画・音声ストリーミング、オンラインゲーム、VoIP、DHCP

✅ 利点と適した場面

  • リアルタイム性が重要なアプリ(多少のパケット損失を許容できる)

  • 高速かつ軽量な通信が求められるケース

  • アプリ側で再送や順序制御を独自に実装できる場合

⚠️ 注意点

  • パケットロスや順序の乱れが発生し得る

  • アプリケーション層で信頼性を担保する必要がある


📊 TCP vs UDP:比較表

項目 TCP UDP
接続制御 あり(接続型) なし(接続レス)
信頼性 高い 低い
順序保証 あり なし
再送制御 あり なし
輻輳制御 あり なし
軽さ 重い 軽い
ヘッダサイズ 約20バイト〜 8バイト
通信速度 比較的遅い 速い
主な用途 Web, メール, ファイル転送 DNS, ゲーム, ストリーミング

🎮使用例:UDPが選ばれる理由

🎧 オンライン音声通話(VoIP)

リアルタイム性が最重要。1秒前の音声データは意味をなさないため、パケット損失があっても遅延しないことが優先される。

🎥 動画ストリーミング(特にライブ配信)

再送による遅延よりも、映像がスムーズに流れることを優先。

🎮 オンラインゲーム

プレイヤーの位置や操作情報は常に更新される。古い情報の再送より、最新の状態を素早く送ることが大事。


🧠さいごに:選択の判断基準

プロトコルの選択は常に目的に応じて決めるべきです。

  • 正確さ」が大事 → TCP

  • スピードリアルタイム性」が大事 → UDP

また、現代の技術では、**QUIC(HTTP/3)**のように「UDPの上に信頼性を追加する」新しい試みも進んでおり、今後の動向にも注目です。