ポート番号の可視化 — 1台のサーバーで複数サービスを見分ける
IPアドレスが「建物の住所」なら、ポート番号は「部屋番号(入口のドア)」です。1台のサーバーは、ポート番号ごとに別々のサービス(Web・メール・SSHなど)を待ち受けています。宛先ポートを選んで「送る」を押し、パケットがどのサービスに届くか、そして接続をどう見分けるかを確かめてください。
いま何が起きているか
これまでの接続(ソケット)一覧
| まだ接続はありません。「送る」を押してください。 |
ポート番号とは — 建物の「部屋番号」
データを届けるには、「どのコンピュータか(IPアドレス)」だけでなく、「その中のどのサービスか」まで指定する必要があります。1台のサーバーはWebもメールもSSHも同時に動かせるからです。この「どのサービスか」を表す0〜65535の番号がポート番号です。宛先は必ず IPアドレス:ポート番号(例 203.0.113.5:443)の形で指定され、サーバーはポート番号を見て、待ち受けている正しいサービスへ振り分けます。上の図で「:80に送るとWeb、:22に送るとSSH」に届くのがこれです。
ウェルノウンポート(代表的な番号)
主要なサービスは、世界共通でポート番号が決められています(0〜1023=ウェルノウンポート)。だから https:// と書くだけで、ブラウザは自動的に443番へつなぎます。
| ポート | サービス | 用途 | TCP/UDP |
|---|---|---|---|
| 22 | SSH | サーバーへの安全なリモート操作 | TCP |
| 25 | SMTP | メール送信 | TCP |
| 53 | DNS | 名前解決(ドメイン→IP) | UDP/TCP |
| 80 | HTTP | Web(暗号化なし) | TCP |
| 443 | HTTPS | Web(暗号化あり) | TCP |
接続を見分ける「ソケット」— 4つ組
上の一覧表を見てください。同じサーバーの同じポート(例 :443)へ何度も接続しても、ちゃんと別の接続として区別されています。その秘密がソケット——1つの接続は、「送信元IP・送信元ポート・宛先IP・宛先ポート」の4つの組(+プロトコル)で識別されるからです。宛先が同じでも、送信元ポート(クライアントが毎回変える一時的な番号)が違えば別の接続。だからブラウザで同じサイトのタブを何個開いても混線しません。
クライアント側のポート(エフェメラルポート)
サーバー側のポートは固定(Webなら443)ですが、クライアント側の送信元ポートは、接続のたびにOSが空いている番号を一時的に割り当てます(エフェメラルポート/動的ポート、おおむね49152〜65535)。上の図で送るたびに送信元ポートが 51001, 51002… と変わるのがこれです。これにより、1台のPCから同時にたくさんの接続を張っても、それぞれを区別できます。
ポートと閉じているポート
そのポートでサービスが待ち受けていなければ、接続は拒否されます(上の図の :3306)。逆に、使っていないポートを開けっぱなしにすると攻撃の入口になるため、ファイアウォールで不要なポートを閉じるのがセキュリティの基本です。ネットワーク境界の可視化やリバースプロキシも、どのポートを外に見せるかを制御しています。
基本情報技術者試験ではこう出る
「ポート番号は何を識別するか(→アプリケーション/サービス)」「HTTPは80、HTTPSは443、SSHは22、DNSは53」といったウェルノウンポートの対応、「IPアドレスとポート番号の組(ソケット)で通信相手を特定する」などが定番です。ポート番号はトランスポート層(TCP/UDP)のヘッダに入ります。実際のTCP接続の流れはTCPコネクションの可視化、1つのグローバルIPを多数の端末で共有するNAPTがポート番号で見分けるしくみはNATの可視化で確認できます。
よくある質問
Q. ポート番号はいくつまである?
A. 16ビットなので 0〜65535 です。0〜1023がウェルノウンポート、1024〜49151が登録済みポート、49152〜65535が動的(エフェメラル)ポートとして使われます。
Q. なぜ「:80」を省略できるの?
A. ブラウザが「httpなら80、httpsなら443」とあらかじめ知っているためです。http://example.com は example.com:80、https://example.com は example.com:443 を意味します。標準以外のポートで動かす場合は example.com:8080 のように明示します。
Q. TCPの80番とUDPの80番は同じ?
A. 別物です。ポート番号はTCPとUDPで独立しており、TCPの80番とUDPの80番は別々に管理されます。だから接続の識別には「送信元/宛先のIP・ポート」に加えてプロトコル(TCPかUDPか)も含めた組で区別します。
関連:TCPコネクションの可視化 / NAT(NAPT)の可視化 / IPアドレスとMACアドレス / ポート番号とは(図解記事) / 可視化一覧