ポート番号とは?

もしも、友人を自宅に招待するときに、自分の住所と名前だけを伝えていても、部屋番号を知らせて場合、どのようになるでしょうか?

それでも、表札を出していれば、それを確認することによって目的の部屋までたどり着くことができます。

しかし、最初から部屋番号が判っていれば時間を無駄にする必要がありません。

ネットワーク上のデータ通信でも、通信相手の端末の住所に該当する「IPアドレス」以外に、その中で通信を待っているプログラムの部屋番号に当たる「ポート番号」というものが、存在します。

 

このポート番号とは、実際に、そのような番号が表示された接続端子がパソコンなどの通信端末についている訳ではありません。

あくまで、理論上の存在として、ネットワーク経由の通信に対応して、目的のプログラムへとその信号を招きます。

では、実際にはどのような仕組みでネットワークからの通信に対応しているのでしょうか?

 

ポート番号とは?

IPアドレスによって、その端末を特定して、ネットワーク経由でやってきた、データ通信の信号はその相手となるプログラムを特定するため、それに特有の番号を指定します。

この番号は「ポート番号」と呼ばれていますが、そのプログラムが使用している通信プロトコル(規格)の種類に応じて、0から65535の範囲で決められています。

細かく言うと、あるサービスを提供している端末(サーバ)のプログラム側で、まず、通信を受け取る仕組みである「ソケット」を作成して、サービスの利用を希望する端末からの通信を待ちます。

 

その際に、そのプログラム固有のポート番号を、ソケットに割り当てることで、それがどのプログラムのソケットであるかを明確にすることができます。

このように、サービスを提供している側のポート番号は重要ですが、サービスを利用することを希望している側のポート番号は他のプログラムで使用していなければそれで足ります。

 

次に、ネットワーク経由で、そのプログラムを利用することを希望する端末は、相手の端末のIPアドレスと、ポート番号を指定して通信を行います。

サービスを提供している側の端末が指定したポート番号の通信を受け取ったときは、その通信のために、新しくソケットを作成して通信を確立します。

最初に通信を受け取ったソケットは新しく作成されたソケットへ通信を引き継いだら、すぐに他の端末からの通信を待ち受ける状態に戻ります。

このような動作を繰り返すことによって、多数の端末からの接続要求に対応することが可能となります。

アクセスが集中すると、この動作を繰り返す必要がありますので、サービスを提供している端末(サーバ)の処理速度によっては、一時的に提供しているサービスの動作が重くなってしまいます。

 

ポート番号の現実

サービスを利用する側のポート番号については、すでに説明したように空いている番号を適当に使用することができます。

実際には、49152番から65535番までのポート番号(プライベート・ポート番号と呼ばれます。)を、自由に使うことが可能です。

これが、サービスを提供している側のプログラムになると、話が全く異なります。0番から1023番までの番号(ウェルノウン・ポート番号と呼ばれます。)の中から、そのプログラム毎に固有の番号を振り分けています。

 

例えば、80番は、インターネット上のWebサイトの閲覧を行うプログラム専用です。

また、セキュリティ対策のされたWebサイトでは、443番が専用のポート番号です。

25番は、電子メールの送信用(送信時に認証する場合は、587番)で、110番はメール受信用です。

ネットワーク経由で、端末の時刻表示を正確に同期しているプログラムでは123番がポート番号です。

 

このように、一般的に利用されている、ネットワークを利用するプログラムには特定のポート番号が決められています。

これとは異なり、各メーカーが独自に開発したプログラムについては、1024番から49151番までの番号の中から、そのプログラムに固有の番号を登録してデータ通信に利用しています。

 

万が一、ネットワークを利用しているプログラムに問題があると、誤作動によって端末の中にある重要なデータを、ネットワーク経由で盗まれてしまう可能性があります。

このような、各種のプログラムに存在する問題を「セキュリティ・ホール」と呼んでいます。

新聞などのニュースでも、これまでに、多数の事例が報告されています。

 

通常は、使用しているプログラムや、端末自体のOSのアップデートによって解消される問題です。

ところが、アップデートのサービスがすでに終了している機種を使用していたり、アップデートを怠っていたりすると、外部から侵入した不正なプログラムによって、端末内の情報が外部に流出する可能性が非常に高くなります。

 

ポート番号は名脇役

プログラムの利用を助ける存在であり、場合によってはセキュリティ対策としての役割も併せ持つ存在です。

セキュリティ対策ソフトとタッグを組むことによって、不正な通信が侵入することを防ぐことができる強い防御力も持っています。

いつもは気にならない存在ほど実は重要な存在である、と言うことでしょうか?