ポート番号 - インターネットの「部屋番号」
IP アドレスが建物の住所だとすれば、ポート番号はその建物の中の部屋番号です。1 台のサーバーが Web サイト、メール、SSH、データベースなど複数のサービスを同時に提供できるのは、各サービスが異なるポート番号で「部屋分け」されているからです。
ポート番号は 0 から 65535 までの整数で、合計 65,536 個。この数字の中には、インターネットの歴史、技術者のユーモア、そして意外な物語が隠されています。
ウェルノウンポート (0-1023) - インターネットの「一等地」
0 から 1023 までのポート番号は「ウェルノウンポート (Well-Known Ports)」と呼ばれ、IANA によって特定のサービスに割り当てられています。Unix 系 OS では、これらのポートを使用するには root 権限が必要です。
ポート 80 (HTTP) と 443 (HTTPS)
Web の標準ポートです。ブラウザで URL を入力するとき、http:// ならポート 80、https:// ならポート 443 に接続します。ポート番号を省略できるのは、ブラウザがプロトコルに応じてデフォルトポートを自動補完するからです。
なぜ 80 なのか。Tim Berners-Lee が 1991 年に HTTP を設計した際、ポート 80 はまだ未割り当てでした。キリの良い数字で覚えやすく、当時の慣習で「空いている番号を使う」という程度の理由だったとされています。443 は、HTTP の次に割り当てられた番号です。
ポート 22 (SSH)
SSH (Secure Shell) の作者 Tatu Ylönen は、1995 年にフィンランドのヘルシンキ工科大学で SSH を開発しました。Ylönen 自身が語ったところによれば、ポート 22 を選んだ理由は「21 (FTP) と 23 (Telnet) の間が空いていたから」です。FTP と Telnet はどちらも暗号化されていない古いプロトコルで、SSH はそれらの安全な代替として設計されました。21 と 23 の間に位置する 22 は、象徴的にも実用的にも完璧な選択でした。
ポート 25 (SMTP)
メール送信プロトコル SMTP のポートです。1982 年の RFC 821 で Jon Postel によって定義されました。現在では、スパム対策のために多くの ISP がポート 25 の外部接続をブロックしており、メール送信にはポート 587 (Submission) が推奨されています。
ポート 53 (DNS)
DNS のポートです。ブラウザが Web サイトにアクセスする際、最初にポート 53 で DNS サーバーに問い合わせ、ドメイン名を IP アドレスに変換します。DNS over HTTPS はこの通信をポート 443 (HTTPS) に移すことで、DNS クエリの暗号化を実現しています。
登録済みポート (1024-49151) - 申請すれば使える「準一等地」
1024 から 49151 までは「登録済みポート (Registered Ports)」で、IANA に申請すれば特定のサービスに割り当てられます。root 権限なしで使用できます。
ポート 3306 (MySQL)
MySQL のデフォルトポートです。なぜ 3306 なのか。MySQL の共同創設者 Michael "Monty" Widenius によれば、特に深い理由はなく、「空いていた番号」だったとのことです。
ポート 5432 (PostgreSQL)
PostgreSQL のデフォルトポート。こちらも特別な由来はなく、開発時に選ばれた番号がそのまま定着しました。
ポート 8080
HTTP の代替ポートとして広く使われています。開発環境で Web サーバーを起動する際、ポート 80 は root 権限が必要なため、代わりに 8080 を使うのが慣習です。「80 の代替」であることが一目で分かる番号選びです。
ポート 6666-6669 (IRC)
IRC (Internet Relay Chat) のデフォルトポート範囲です。6666 という番号は「悪魔の数字」(666) を連想させますが、IRC の開発者 Jarkko Oikarinen がこの番号を選んだ理由は不明です。IRC は 1988 年にフィンランドで開発され、インターネット初期のリアルタイムコミュニケーションの中心でした。
動的ポート (49152-65535) - 一時的な「仮住まい」
49152 から 65535 までは「動的ポート (Dynamic/Ephemeral Ports)」で、OS がクライアント側の通信に一時的に割り当てます。ブラウザが Web サーバーに接続するとき、サーバー側はポート 443 ですが、クライアント側は OS が自動的に割り当てた動的ポート (例: 52847) を使用します。
通信が終了すると、動的ポートは解放され、別の通信に再利用されます。
ポート番号にまつわる雑学
ポート 0 - 存在するが使えない
ポート 0 は「ワイルドカード」として予約されています。プログラムがポート 0 にバインドすると、OS が空いている動的ポートを自動的に割り当てます。テストやデバッグで「どのポートでもいいから空いているものを使いたい」場合に便利です。
ポートスキャン - 開いているドアを探す
攻撃者がサーバーの脆弱性を探す際、最初に行うのがポートスキャンです。nmap などのツールで全ポートをスキャンし、どのサービスが稼働しているかを調査します。不要なポートを閉じ、ファイアウォールで必要なポートのみを許可することが、サーバーセキュリティの基本です。
65535 の由来
ポート番号が 65535 までなのは、TCP/UDP ヘッダーでポート番号に 16 ビットが割り当てられているからです。2^16 = 65,536 で、0 を含めると 0〜65535 の範囲になります。この設計は 1981 年の TCP 仕様 (RFC 793) で決まりました。
まとめ
ポート番号は、IP アドレスと並ぶインターネット通信の基本要素です。80 と 443 が Web を支え、22 が安全なリモートアクセスを提供し、53 が名前解決を担う。これらの数字の一つ一つに、インターネットの歴史と設計思想が刻まれています。
IP 確認さんで確認できる IP アドレスの先には、ポート番号で区切られた無数のサービスが稼働しています。次にブラウザで Web サイトを開くとき、その通信がポート 443 を通っていることを思い出してみてください。
ポート番号とネットワークプロトコルの仕組みを学びたい方には、TCP/IP の入門書が参考になります。