TCP・UDP
更新日:
OSI参照モデルのトランスポート層(4層)を担うプロトコル。「どのアプリケーションに届けるか」「データを確実に届けるか」を管理する。TCPとUDPは性質が正反対で、用途によって使い分ける。
ポート番号の役割
IPアドレスが「建物の住所」なら、ポート番号は「部屋番号」。同じ端末上で複数のアプリ(ブラウザ、メールソフト等)が同時に通信できるのは、ポート番号でアプリごとに通信を振り分けているため。
代表的なポート(well-known port):
| ポート | 用途 |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 22 | SSH |
| 53 | DNS |
| 25 | SMTP(メール送信) |
TCP(Transmission Control Protocol)
コネクション型で信頼性を重視するプロトコル。
-
3ウェイハンドシェイク: 通信開始前に3回のやり取りで接続を確立する
- クライアント → サーバー:
SYN(接続要求) - サーバー → クライアント:
SYN/ACK(要求を受け入れ、こちらも接続要求) - クライアント → サーバー:
ACK(了解)
これにより、送受信双方が「相手と通信できる状態にある」ことを確認してからデータ送信を始められる。
- クライアント → サーバー:
-
信頼性の仕組み: 送ったデータが届いたかを
ACK(受信確認)で確認し、届いていなければ再送する。また、パケットが届いた順序がバラバラでも正しい順序に並べ直す -
上記の仕組みのぶん、UDPよりオーバーヘッド(処理・通信量)が大きい
UDP(User Datagram Protocol)
コネクションレスでシンプル・高速なプロトコル。
- 接続確立の手順がなく、いきなりデータを送りつける(送りっぱなし)
- 到着順序の保証や再送の仕組みがない → データが欠けたり順番が入れ替わったりする可能性がある
- そのぶんオーバーヘッドが少なく低遅延
使い分け
| 用途 | 採用 | 理由 |
|---|---|---|
| Webサイト閲覧(HTTP・HTTPS・TLS) | TCP | ページの一部が欠けたら困る、確実性重視 |
| ファイル転送、メール | TCP | データの完全性が必須 |
| DNS | UDP(基本) | 小さいデータで高速に返したい、多少のロスは再問い合わせで対応可能 |
| 動画・音声配信、オンラインゲーム | UDP | 多少のデータ欠損より、遅延しないことの方が重要(1コマ古い映像より今の映像) |
「確実に届けたいか」vs「速さ・リアルタイム性を優先するか」がTCP/UDPを選ぶ基準になる。