ポート番号の可視化 — 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
22SSHサーバーへの安全なリモート操作TCP
25SMTPメール送信TCP
53DNS名前解決(ドメイン→IP)UDP/TCP
80HTTPWeb(暗号化なし)TCP
443HTTPSWeb(暗号化あり)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.comexample.com:80https://example.comexample.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アドレスポート番号とは(図解記事)可視化一覧