パソコン実習室
アドレスとポート
≪ previous next ≫

Ⅲ.ポート番号

 パケットを受信したサーバーやパソコンでは、そのパケットを適切に処理できるアプリケーションに渡す必要があります。ホームページのデータをメールアプリが受け取っても対応できないからです。
 IANAは様々なサービス(使用目的)にポート番号を定め、公表しています。 適切なサービスの提供・利用には、ポート番号は必須な情報になります。
 ポートという言葉は様々な局面で使われます。
ハードウェアでは周辺機器接続用のケーブル差込口をポートいいます。LANポートやUSBポート、シリアルポートなどがあります。一方ソフトウェアでは抽象化されたデータの受け渡し窓口を指してポートと呼んだりします。
 TCP/IP通信ではパケットに対応するアプリケーションを識別するために用いられます。

Ⅲ.1.ポート番号の種類

 パソコンやサーバーでは複数のアプリケーションが同時に稼働しています。ポート番号はそうした環境でアプリケーションを識別するために用いられます。

 ポート番号は16ビットの整数値で 0番 から 65,535番まであり、番号によって次の3種類に分類されます。
  • 0番 ~ 1,023番
    ウェルノウン ポート番号(well known port numbers)
    IANAが使用目的(対応するアプリケーション)を定めています。
  • 1,024番 ~ 49,151番
    登録ポート番号(registered port numbers)
    使用目的の申請をIANAが受け付けて公表しています。
  • 49,152番 ~ 65,535番
    動的ポート番号(dynamic/private port numbers)
    自由に使用できるポート番号として開放されています。
    主にアプリケーション識別用としてOSが管理しています。
代表的なTCP(UDP)のウェルノウン ポート番号は次の通りです。
ポート番号適用
20ftp-data:ファイル転送データ
21ftp:ファイル転送コントロール
25smtp:メール送信
53 (udp)dns:ドメイン名問い合わせ
ポート番号適用
80http:webアクセス
110pop3:メール受信 ver.3
123ntp:時刻合わせ
443https:高セキュリティのhttp
◎ UDP(User Datagram Protocol)は速度優先の仕様で、データの信頼性はアプリケーションが担います。

ポート番号の一覧はIANAのサイトで見ることができます。

Ⅲ.2.ポート番号によるアプリケーションの識別

【 もし、ポート番号がなかったら 】
あるユーザーがホームページを見ようとしています(下図)。

ユーザーの送り出したパケットがサーバーに届きます。
サーバーOSは受信したパケットのデータを適切なアプリケーションに渡したいところですが、要求サービスの情報が不足しているため、受け渡すべきアプリケーションを判別できない事態に陥ってしまいます。
このパケットは破棄されることになり、通信は不成立になります。

【 ポート番号があれば 】
あるユーザーがホームページを見ようとしています(下図)。

(1) ブラウザの要求を受けたユーザーOSは、動的ポート番号の中から空いている番号を選択(仮に50000)してブラウザに割り当て、次の情報を記載した要求パケットを送信します。
  • 宛先ポート番号:80 (ウェルノウン ポート)
  • 待受ポート番号:50000 (動的ポートからランダムに選択)
(2) サーバーOSは宛先ポート番号 80 を参照し、該当の処理(http)を担当するアプリケーション(httpd等)にデータを渡します。
 httpd等が処理・作成した応答データを受けたサーバーOSは、宛先ポート番号が50000(要求パケットの送信元ポート)の応答パケットを完成させて送信します。
 応答パケットを受け取ったユーザーOSは宛先ポート番号 50000 を参照し、要求元であるブラウザにデータを届けます。
◎ ユーザーのパソコンで複数のアプリケーションが同時に通信を行っていても、それぞれ使用しているポート番号が異なるので受信したパケットは適切なアプリケーションに渡ります。

 IPアドレス、MACアドレス、ポート番号の関係は、
IPアドレスを会社の所在地、ポート番号を実務担当者、MACアドレスを荷物(パケット)の中継を行う物流ターミナルに例えると分かり易くなります。



パケットの送受信を適格に行うには、パケットを処理するアプリケーションを双方で識別可能にする仕組みが必須です。
サーバー側は公表されているウェルノウン ポート使用し、ユーザー側は動的ポートの中から選んだポート番号を要求の際に通知する方法が採用されています。
TCP/IP通信での宛先指定には、IPアドレスとポート番号のセットが基本になります。



 パソコンが選択する動的ポート番号の範囲は netsh コマンドで表示することができます。下記はTCPプロトコルの動的ポートの範囲を表示したものです(windows10の例)。
C:\>netsh int ipv4 show dynamicport tcp

プロトコル tcp の動的ポートの範囲
---------------------------------
開始ポート: 49152
ポート数: 16384
◎ UDPプロトコルの動的ポートの範囲も同様に表示できます。

 ウェルノウン ポートを必要とするのはサーバーです。クライアント(ユーザー)の要求を待ち受けるには公開されている情報(番号)を使う方が便利だからです。
 一方クライアントは、待ち受けるポート番号を要求パケットに記述してサーバーに知らせれば済むことなので、動的ポート番号の中からランダムに選んだ番号を使います。

 パソコンが使っているポート番号は netstat コマンドで知ることができます。
アドレス末尾に続く数値がポート番号です。
C:\>netstat -no

アクティブな接続

プロトコルローカル アドレス外部アドレス状態PID
TCP127.0.0.1:5354127.0.0.1:49681ESTABLISHED3496
TCP127.0.0.1:49681127.0.0.1:5354ESTABLISHED908
TCP192.168.1.2:50004  104.78.93.174:80CLOSE_WAIT3304
TCP192.168.1.2:50507219.103.130.73:80CLOSE_WAIT8580
◎ 状態は、ESTABLISHED:使用中、CLOSE_WAIT:終了待ち。
◎ PIDはプロセスID。タスクマネージャー[詳細表示]-[詳細タブ]のPIDと対応しています。




前ページ  1 2 - 4  次ページ

≪ previous [[ アドレスとポート ]] next ≫