ポート番号

ポート番号とは

ポート番号は、1台のマシンの中のどのアプリケーション(サービス)宛の通信かを区別するための番号です。[[IPアドレスとサブネット]] のIPアドレスが「建物の住所」なら、ポート番号は「部屋番号」にあたります。

範囲は 0〜65535 で、[[TCP/IP]] のトランスポート層(TCP/UDP)で使われます。1台のサーバーがWebとメールとSSHを同時に提供できるのは、ポート番号で通信を仕分けているからです。

よく使うウェルノウンポート

0〜1023番はウェルノウンポートと呼ばれ、主要なサービスに予約されています。実務で頻出のものは覚えてしまいましょう。

ポートサービス
22[[SSH]]
25 / 110 / 143[[メールの仕組み(SMTP・POP3・IMAP)]]
53[[DNS]]
80[[HTTP]]
443[[HTTPS・TLS]]
3389[[RDP(リモートデスクトップ)]]

1024〜49151番は登録済みポート(アプリが登録して使う。例: 3306 は MySQL)、49152以降はエフェメラルポートとしてクライアント側が一時的に使います。

通信は「IP+ポート」の組で決まる

ブラウザがWebサーバーへアクセスするとき、実際の通信は次の4つ組で識別されます。

  • 送信元IP+送信元ポート(クライアントの一時ポート。例: 51234)
  • 宛先IP+宛先ポート(サーバーの待ち受けポート。例: 443)

サーバー側は決まったポートで待ち受け(LISTEN)、クライアント側は空いている一時ポートから接続します。この「IP+ポートの組」を抽象化したものが [[ソケット通信]] のソケットです。

初学者向けポイント

  • 「接続できない」ときの定番切り分け: サービスは起動しているか(ss -ltn 等で LISTEN を確認)→ [[ファイアウォール]] でそのポートが許可されているか
  • URLの http://example.com:8080 のように、標準以外のポートは :番号 で明示する(80/443 は省略される)
  • 同じポートを2つのプログラムで同時に待ち受けることはできない — 開発中の「Address already in use」エラーの原因

関連技術とのつながり

  • [[TCP/IP]] — ポート番号はトランスポート層でアプリを区別する仕組み
  • [[HTTP]] — 80番(HTTPS は443番)が標準ポート
  • [[ファイアウォール]] — ポート番号単位で通信を許可・遮断する
  • [[NATとポートフォワーディング]] — ポート番号を利用してアドレス変換や転送を行う
Q: ポート番号の役割として正しいのはどれ?
- [ ] ネットワーク上の機器そのものを特定する
- [x] 1台のマシンの中のどのサービス宛の通信かを区別する
- [ ] 通信を暗号化する鍵として使う
解説: 機器の特定はIPアドレスの役割です。ポート番号は「同じ建物(IP)の中の部屋番号」にあたります。

Q: HTTPSの標準ポートはどれ?
- [ ] 22
- [ ] 80
- [x] 443
解説: 443がHTTPS、80がHTTP、22がSSHの標準ポートです。

Q: エフェメラルポートの説明として正しいのはどれ?
- [x] クライアント側が接続のたびに一時的に使う49152以降のポート
- [ ] 0〜1023の主要サービスに予約されたポート
- [ ] サーバーが待ち受けに使う固定ポート
解説: 0〜1023はウェルノウンポートで、エフェメラルポートはクライアントが一時的に使う領域です。