TCPとUDPは、アプリケーションのデータを相手に届けるための代表的なトランスポート層プロトコルです。
一言でいうと
TCPは正確に届けることを重視し、UDPは軽さと速さを重視します。
比較表
| 観点 | TCP | UDP |
|---|---|---|
| 接続 | 接続を確立してから通信する | 接続を確立せずに送る |
| 到達確認 | あり | なし |
| 順序保証 | あり | なし |
| 再送制御 | あり | なし |
| 速度 | UDPより重くなりやすい | 軽い |
| 主な用途 | Web、メール、SSH、ファイル転送 | DNS、音声、動画、ゲーム、QUIC |
TCPが向いている場面
TCPは、データが欠けたり順番が入れ替わったりすると困る場面に向いています。
- Webページの取得
- API通信
- ファイルダウンロード
- SSH接続
- メール送受信
WebページのHTMLが途中で欠けると表示が壊れます。そこでHTTP/1.1やHTTP/2はTCPの上で動くことが一般的です。
UDPが向いている場面
UDPは、多少の欠落よりもリアルタイム性が重要な場面に向いています。
- DNS問い合わせ
- 音声通話
- 動画配信の一部
- オンラインゲーム
- QUIC / HTTP/3
UDPは何も保証しない代わりに軽いです。必要な信頼性は、UDPの上で動くアプリケーション側が工夫して実装することがあります。
「UDPは危険」ではない
UDPは信頼性がないと聞くと、危険な通信のように感じるかもしれません。しかし、UDPは用途に応じた設計です。
たとえば音声通話では、少し前の音声データを再送しても意味が薄い場合があります。それよりも、遅延を小さく保つ方が重要です。
TCPとUDPは優劣ではなく、用途に合わせて選ぶものです。
ポート番号との関係
TCPにもUDPにもポート番号があります。同じ 53 番でも、TCP 53番とUDP 53番は別の通信として扱われます。
| サービス | よく使うプロトコル |
|---|---|
| HTTP | TCP 80 |
| HTTPS | TCP 443 |
| DNS | UDP 53、必要に応じてTCP 53 |
| QUIC / HTTP/3 | UDP 443 |
よくある誤解
| 誤解 | 実際 |
|---|---|
| TCPは常に安全 | 暗号化はTLSなど別の仕組みが必要です |
| UDPは必ず不安定 | 用途に合えば十分に実用的です |
| Webは全部TCP | HTTP/3ではUDP上のQUICが使われます |
| UDPにはポートがない | UDPにもポート番号があります |
まとめ
TCPは正確性、UDPは軽さとリアルタイム性を重視します。Web開発ではTCPをよく見ますが、DNSやHTTP/3ではUDPも重要です。ネットワークを読む時は、どのプロトコルがどのポートで使われているかを合わせて確認します。