ポート番号とは

ポート番号とは、TCP/IPのアプリケーションを識別するための識別番号で、TCPまたはUDPヘッダに記述されています。ポート番号によって、PC/サーバなどに届いたデータがどのアプリケーションのデータであるかを識別して、適切なアプリケーションへデータを振り分けます。

図 ポート番号の概要

「ポート番号」という言葉は、前後の文脈によって意味が違うので注意が必要です。レイヤ2スイッチなどのネットワーク機器のインタフェースの番号という意味合いで使うこともよくあります。

ポート番号の範囲

ポート番号は16ビットの数値なので、取りうる範囲は0~65535です。そして、以下のように範囲で意味が決められています。

名称

ポート番号の範囲

意味

ウェルノウンポート

0~1023

サーバアプリケーション用に予約されているポート番号

登録済みポート

1024~49151

よく利用されるアプリケーションのサーバ側のポート番号

ダイナミック/プライベートポート

49152~65535

クライアントアプリケーション用のポート番号

ウェルノウンポート番号

特に重要なのがウェルノウンポート番号です。ウェルノウンポート番号は、あらかじめ決められています。サーバアプリケーションを起動すると、ウェルノウンポート番号でクライアントアプリケーションからの要求を待ち受けます。たとえば、Webサーバアプリケーションはアプリケーションプロトコルとして、HTTPを利用します。HTTPのウェルノウンポート番号は80なので、Webサーバアプリケーションはポート番号80でWebブラウザからの要求を待ち受けることになります。

主なアプリケーションプロトコルのウェルノウンポート番号は、次の表のようになります。

プロトコル

TCP

UDP

HTTP

80

HTTPS

443

SMTP

25

POP3

110

IMAP4

143

DNS

53

53

FTP

20/21

DHCP

67/68

Telnet

23

サーバアプリケーションの設定でウェルノウンポート番号以外のポート番号に変更することは可能です。

登録済みポート

登録済みポートは、ウェルノウンポート番号以外でよく利用されるサーバアプリケーションを識別するためのポート番号です。登録済みポートもあらかじめ決められています。たとえば、リモートからPCなどの操作を行うリモートデスクトップは、ポート番号3389を利用します。

ダイナミック/プライベートポート

ダイナミック/プライベートポートは、クライアントアプリケーションを識別するためのポート番号です。ウェルノウンポートや登録済みポートと異なり、あらかじめ決められているわけではありません。クライアントアプリケーションが通信するときに、ダイナミックに割り当てられます。また、Webブラウザならブラウザのタブ/ウィンドウごとに異なるポート番号が自動的に割り当てられます。これにより、Webブラウザのタブ/ウィンドウを識別できるようにしています。

フローはIPアドレスとポート番号の組み合わせで識別できる

アプリケーションの一連のデータのまとまりであるフローはIPアドレスとポート番号の組み合わせで識別できます。IPヘッダにあるIPアドレスでアプリケーションが動作しているPC/サーバなどがわかります。そして、TCP/UDPヘッダのポート番号でPC/サーバ上のアプリケーションがわかります。IPアドレスとポート番号の組み合わせを表記するときには、「10.0.0.1:80」のように」「:」で区切ります。

図 IPアドレスとポート番号の組み合わせ

ルータやレイヤ2スイッチで、ただ単にアプリケーションのデータを転送するときには、ポート番号まで意識する必要はありません。セキュリティを確保するために、パケットフィルタリングを設定するときや、特定のアプリケーションの通信を優先するQoS(Quality of Service)の制御をするときにはポート番号まできちんと考えなくてはいけません。

ポート番号の確認(Windows)

Windows PCでコマンドプロンプトから「netstat」コマンドでTCPの通信状態をみて、PCがどんなアプリケーションの通信をしているかを確認できます。以下は、Windows PCのnetstatコマンドの出力例です。

C:\Users\gene>netstat -n

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         127.0.0.1:5354         127.0.0.1:49669        ESTABLISHED
  TCP         127.0.0.1:5354         127.0.0.1:49670        ESTABLISHED
  TCP         127.0.0.1:9977         127.0.0.1:49955        ESTABLISHED
  TCP         127.0.0.1:27015        127.0.0.1:49823        ESTABLISHED
  TCP         127.0.0.1:49669        127.0.0.1:5354         ESTABLISHED
  TCP         127.0.0.1:49670        127.0.0.1:5354         ESTABLISHED
  TCP         127.0.0.1:49779        127.0.0.1:54418        ESTABLISHED
  TCP         127.0.0.1:49823        127.0.0.1:27015        ESTABLISHED
  TCP         127.0.0.1:49955        127.0.0.1:9977         ESTABLISHED
  TCP         127.0.0.1:50041        127.0.0.1:58385        ESTABLISHED
  TCP         127.0.0.1:54285        127.0.0.1:65001        ESTABLISHED
  TCP         127.0.0.1:54418        127.0.0.1:49779        ESTABLISHED
  TCP         127.0.0.1:58385        127.0.0.1:50041        ESTABLISHED
  TCP         127.0.0.1:58611        127.0.0.1:443          SYN_SENT
  TCP         127.0.0.1:65001        127.0.0.1:54285        ESTABLISHED
  TCP         192.168.1.169:54284    192.168.1.154:8009     ESTABLISHED
  TCP         192.168.1.169:54309    192.168.1.152:8009     ESTABLISHED
  TCP         192.168.1.169:54310    192.168.1.153:8009     ESTABLISHED
  TCP         192.168.1.169:54458    40.119.211.203:443     ESTABLISHED
  TCP         192.168.1.169:54460    77.79.249.197:443      ESTABLISHED
  TCP         192.168.1.169:54473    77.79.249.197:443      ESTABLISHED
  TCP         192.168.1.169:54481    77.79.249.197:443      ESTABLISHED
  TCP         192.168.1.169:54550    172.217.24.138:443     ESTABLISHED
  TCP         192.168.1.169:57493    40.119.211.203:443     ESTABLISHED
  TCP         192.168.1.169:57549    54.240.253.21:443      ESTABLISHED
  TCP         192.168.1.169:57620    151.101.2.49:443       ESTABLISHED
  TCP         192.168.1.169:57840    172.217.161.77:443     CLOSE_WAIT
  TCP         192.168.1.169:57924    157.7.107.52:443       ESTABLISHED
  TCP         192.168.1.169:58376    172.217.161.42:443     CLOSE_WAIT
~省略~

「ローカルアドレス」がPC自身の情報で、「外部アドレス」が宛先の情報です。IPアドレス:ポート番号というフォーマットで、TCPで通信を行っているIPアドレスとポート番号の組み合わせがわかります。