ネットワークのポート番号とは

目次

ポート番号とは

http://localhost:8080/

この8080がポート番号です。

ポート番号とは、TCP/IP通信において、どのアプリケーション(サービス)と通信するかを識別する番号です。

 

ポート番号が必要な理由

1台のサーバには複数のサービスが同時に動作します。

80番 → Webサーバ(HTTP)
443番 → Webサーバ(HTTPS)
22番 → SSH

ポート番号により、同一IPアドレスでも複数サービスを区別できるため、正しい宛先に通信できます。

 

通信の識別

通信は以下の5つで一意に識別されます(5-tuple)。

  • 送信元IPアドレス
  • 送信元ポート番号
  • 宛先IPアドレス
  • 宛先ポート番号
  • プロトコル(TCP / UDP)
192.168.1.10:52000 → 100.x.x.x:443 (TCP)

この5つが完全一致しない限り、別の通信として扱われます。
ポート番号が同じ53でも、53/TCPと53/UDPは別物です。

ポート番号の範囲と分類(IANA基準)

ポート番号は 0〜65535 で、以下の3種類に分類されます。

範囲 名称 説明
0番 - 1023番 System Ports
(Well-Known Ports)
OSや標準サービスが使用
多くの環境で管理者権限が必要
例:80(HTTP)、443(HTTPS)、22(SSH)、25(SMTP)
1024番 - 49151番 Registered Ports IANAに登録されたアプリ用ポート
固定用途で使われることが多い
例:3306(MySQL)、1521(Oracle)
※ただし必ずそのポートを使う義務はない(変更可能)
49152番 - 65535番 Dynamic / Ephemeral クライアント側が使用する一時ポート
OSが自動的に割り当て
ランダムではなくOSが定めた範囲から動的に選択される

 

通信の流れ

Webアクセスの例:

クライアント
192.168.1.10:52000 ← エフェメラルポート

サーバ
100.x.x.x:443

クライアントは動的ポートを使用します。
通信(セッション)ごとにポートが割り当てられます。
さらに同一ブラウザでも複数ポートを使用し、タブごとに通常は別々のポートが割り当てられます。

サーバは固定ポートで待ち受けをしていて、送信元IP+ポートで通信相手を識別します。

 

デフォルトのポート

デフォルトのポートは省略できます。

例:

http://example.com → 80が省略されている
https://example.com → 443が省略されている

 

ファイアウォール

ファイアウォールの通信許可は、ポート単位で制御されます。

  • 22のみ許可 → SSHのみ許可
  • 443のみ許可 → HTTPSのみ許可

セキュリティ観点から原則不要なポートは閉じます。
特に、22(SSH)、3389(RDP)、445(SMB)は注意です。

netstatで確認

netstatは、リアルタイムでどこにどんな状態で繋がっているかを確認できるコマンドです。

netstat -n
TCP 192.168.1.10:54633 → 100.x.x.x:443

左は自分のIP + ポートで、右は接続先です。

※netstatはLinux環境では現在非推奨となっており、代替としてssコマンドが推奨されています。

 

IANAのポート番号のリンクです。
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

関連の記事

ネットワーク 主なポート番号の一覧
Webサーバに接続するまでの流れとポート番号

△上に戻る