ポート番号

ポート番号とは各種サービスの窓口番号

ポート番号とはTCP/IP通信において、 サーバーが提供しているHTTPやFPTなどの各種サービス (プロトコル)を識別するための窓口番号です。

窓口番号は、役所や銀行をイメージするとわかりやすいと思います。 役所や銀行はいろんなサービスを提供していて、 サービスごとに窓口が複数用意されています。 そしてサービスを提供してもらう側は、 その窓口を通してサービスを受けます。

サーバーも同じです。 サーバーはHTTP、FTP、SSH、SMTPなど複数のサービス(プロトコル) を外部に提供しています。 IPアドレスからコンピュータを特定することはできますが、 どのサービス(プロトコル)にパケットを渡せばいいかまではわかりません。 どのサービス(プロトコル)を使うかを識別するための番号がポート番号です。

ポート番号の種類とプロトコル

窓口

ポート番号は16ビットの整数です。 0~65535まで用意されていて、 大きく3つに区別されます。

  • 0~1023: ウェルノウンポート番号
  • 1024~49151: 登録ポート番号
  • 49152~65535: ダイナミック・プライベートポート番号

ポート番号を調べたい場合は、 IANA(Internet Assigned Numbers Authority) のサイトでポート番号の一覧を確認できます。
Service Name and Transport Protocol Port Number Registry

ウェルノウンポート番号

「0~1023」までをウェルノウンポート番号(WELL KNOWN PORT NUMBERS)といい、 IANAによって利用するプロトコルが決められています。

よく使われるウェルノウンポート番号の一部を紹介します。

ポート番号種別プロトコル概要
20TCPFTPファイル転送(データ)
21TCPFTPファイル転送(制御)
22TCPSSH遠隔操作の暗号化
23TCPTelnet遠隔操作
25TCPSMTPメール送信
80TCPHTTPWebページ閲覧
110TCPPOP3メール受信
119TCPNNTPニュース
123UDPNTP時間取得
143TCPIMAPメール受信
443TCPHTTPSHTTPの暗号化

登録ポート番号

「1024~49151」までを登録ポート番号(REGISTERED PORT NUMBERS)といい、 特定のサービス(ソフトウェア)ごとに割り当てられます。 登録ポート番号についてはIANAが登録を受け付けて、公開しています。

例えば、 データベースソフトとして有名な「MySQL」はポート番号「3306」、 「PostgreSQL」は「5342」です。

ダイナミック・プライベートポート番号

「49152~65535」までをダイナミック・プライベートポート番号 (DYNAMIC AND/OR PRIVATE PORTS)といい、自由に使える番号となっています。

クライアント側のポート番号

これまで紹介したHTTPが80番、SMTPが25番といったポート番号については、 あくまで各種のサービスを提供しているサーバー側の話であって、 クライアント側(サービスを受ける側)は別の話になります。

クライアント側はセキュリティ等のために、 毎回ランダムにポート番号が割り当てられます。 そしてサーバーとの通信が終わるとポートが閉じられます。 例えば、ある通信のときは50142を割り当て、 次の通信の時には51823のようなランダムなポート番号を割り当てます。

使用するたびに動的にランダムなポート番号を開閉することで、 外部からの侵入のリスクを低くしています。