ポート番号
ポート番号とは
ポート番号は、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はウェルノウンポートで、エフェメラルポートはクライアントが一時的に使う領域です。