1-7 TCP・UDP・ポート番号
ホスト内部のサービスを識別するポート番号と、その上に立つ TCP・UDP の役割を 1 ページで整理する。
1. ポート番号とは
IP アドレスはホストを一意に識別する番号でした。しかし現実のホストでは、Web サーバやメールサーバ、SSH など複数のサービスが同時に動作しています。届いたパケットをどのサービスへ渡すかを区別する仕組みが、トランスポート層で用いられる ポート番号 です。
ポート番号は 16 ビットの整数で、0 から 65535 までの値を取ります。IP アドレスがホストを指すのに対し、ポート番号は同一ホスト内のどのサービスに紐づくかを示します。両者を組にした 「IP アドレス + ポート番号」 を ソケット と呼び、これにより通信の終端が一意に定まります。サーバはサービスごとに固定のポートで待ち受け、クライアントは接続ごとに一時的なポートを確保します。
2. ポート番号の 3 区分
ポート番号は IANA (Internet Assigned Numbers Authority) により次の 3 区分で管理されています。
| 範囲 | 名称 | 代表例 |
|---|---|---|
| 0 〜 1023 | ウェルノウンポート | HTTP=80 / HTTPS=443 / SSH=22 / DNS=53 |
| 1024 〜 49151 | 登録済みポート | PostgreSQL=5432 / Redis=6379 |
| 49152 〜 65535 | 動的・私用ポート | クライアント側の一時利用 |
ウェルノウンポートは主要サービス用に予約され、サーバ側で使われます。登録済みポートはベンダー登録された特定アプリケーション用の範囲です。動的・私用ポートは エフェメラルポート とも呼ばれ、クライアントが接続ごとに一時的に確保します。Web ブラウザが 443 番に接続する際も、自身の送信元ポートはこのエフェメラルポート範囲から空きを選びます。IANA が定める動的・私用範囲は 49152〜65535 ですが、実際に使う範囲は OS 実装・設定で異なります(たとえば Linux は ip_local_port_range で既定範囲を持ちます)。
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 章の総まとめとしていきます。
| 範囲 | 名称 | 代表例 |
|---|---|---|
| 0 〜 1023 | ウェルノウンポート | HTTP=80 / HTTPS=443 / SSH=22 / DNS=53 |
| 1024 〜 49151 | 登録済みポート | PostgreSQL=5432 / Redis=6379 |
| 49152 〜 65535 | 動的・私用ポート | クライアント側の一時利用 |

