1-7 TCP・UDP・ポート番号
ホスト内部のサービスを識別するポート番号と、その上に立つ TCP・UDP の役割を 1 ページで整理する。
1. ポート番号とは
IP アドレスはホストを一意に識別する番号であった。しかし現実のホストでは、Web サーバやメールサーバ、SSH など複数のサービスが同時に動作している。届いたパケットをどのサービスへ渡すかを区別する仕組みが、トランスポート層で用いられる ポート番号 である。
ポート番号は 16 ビットの整数で、0 から 65535 までの値を取る。IP アドレスがホストを指すのに対し、ポート番号は同一ホスト内のどのサービスに紐づくかを示す。両者を組にした 「IP アドレス + ポート番号」 を ソケット と呼び、これにより通信の終端が一意に定まる。サーバはサービスごとに固定のポートで待ち受け、クライアントは接続ごとに一時的なポートを確保する。
2. ポート番号の 3 区分
ポート番号は IANA により次の 3 区分で管理されている。
| 範囲 | 名称 | 代表例 |
|---|---|---|
| 0 〜 1023 | ウェルノウンポート | HTTP=80 / HTTPS=443 / SSH=22 / DNS=53 |
| 1024 〜 49151 | 登録済みポート | PostgreSQL=5432 / Redis=6379 |
| 49152 〜 65535 | 動的・私用ポート | クライアント側の一時利用 |
ウェルノウンポートは主要サービス用に予約され、サーバ側で使われる。登録済みポートはベンダー登録された特定アプリケーション用の範囲である。動的・私用ポートは エフェメラルポート とも呼ばれ、クライアントが接続ごとに一時的に確保する。Web ブラウザが 443 番に接続する際、自身は 49152 番以降から空きを選んで送信元ポートとする。
3. TCP(Transmission Control Protocol)
TCP は コネクション指向 で 信頼性 を保証するトランスポート層プロトコルである。通信に先立ち、送信側と受信側で論理的なコネクションを確立する。この手順は 3-way ハンドシェイク と呼ばれ、SYN、SYN/ACK、ACK の 3 つのセグメントを往復させて互いの準備を確認する。
確立後はデータを シーケンス番号 で順序付けし、受信側は ACK で到達を通知する。セグメントが失われた場合は 再送 で補い、データは順序通り欠落なく届くことが保証される。加えて、受信側の処理能力に合わせて送信量を調整する フロー制御、混雑を検出して送信レートを抑える 輻輳制御 も組み込まれている。輻輳制御には Reno や CUBIC などのアルゴリズムがあるが、本節では存在に触れるに留める。これらの仕組みは信頼性と引き換えに、確立時の往復遅延と 20 バイト以上のヘッダオーバーヘッドを伴う。

4. UDP(User Datagram Protocol)
UDP は コネクションレス でシンプルなトランスポート層プロトコルである。ハンドシェイクを行わず、送信側はデータグラムと呼ばれる独立したパケットをそのまま送出する。順序保証も再送もフロー制御も行わず、必要があればアプリケーション側で実装する。
ヘッダは送信元ポート、宛先ポート、長さ、チェックサムの 4 フィールドのみで、合計 8 バイト と最小限である。確立の往復も発生しないため遅延が小さく、低遅延が要件となる通信や、損失をある程度許容できる通信に適する。
5. TCP と UDP の使い分け
両者の特性を整理すると次のようになる。
| 比較項目 | TCP | UDP |
|---|---|---|
| コネクション | 指向(事前確立) | レス(事前確立なし) |
| 信頼性 | あり(再送・順序保証) | なし |
| 順序保証 | あり | なし |
| ヘッダサイズ | 20 バイト以上 | 8 バイト |
| 遅延 | 大きい | 小さい |
| 代表例 | HTTP / HTTPS / SSH / SMTP / FTP | DNS / DHCP / NTP / VoIP / 動画配信 |
TCP は確実な配送が要件となる通信に用いられる。Web ページの取得、メール、ファイル転送、リモートログインのように、欠落や順序入れ替わりが致命的になる用途である。一方 UDP は、問い合わせと応答が 1 往復で完結する軽量な通信や、リアルタイム性が品質を左右する通信に向く。DNS は基本 UDP だが、応答サイズが大きい場合やゾーン転送では TCP が使われる。

6. 次節
続く 1-8 では、土台の上で利用される代表的なアプリケーションプロトコル群(DNS / ARP / ICMP / DHCP / HTTP・HTTPS)がどの層で何を解決するのかを並列に整理し、第 1 章の総まとめとする。