ポート番号について解説していきます。ポート番号は16ビット(2の16乗=65535)のデータフィールドを持っており、それぞれTCPとUDPごとに存在します。例えばTCP4000番とUDP4000番は別物です。TCPとUDPといったプロトコルのヘッダ情報には
セッションの確立やアプリケーションの識別を行うために、このようなポート番号と呼ばれる情報が含まれています。
■ウェルノウンポート番号
HTTPやFTP、SMTPなどの各種通信サービスは、いずれも各々のサービスを識別するためにポート番号によって管理されています。これらは特定のサービスを利用したプロセスにあらかじめ割り当てられており、他のサービスでは利用することができないようになっています。例えば、TCPの80番はWWW、TCPの21番はFTPといったようにあらかじめサービスとしてリザーブされているのです。これらの各種アプリケーション用の管理番号として利用されているポート番号のことを「よく知られた番号」と言うことウェルノウンポート番号(Well-known
Port Number)と呼び、一般的には1023番以下の値で定義されています。参考までにWindows95/98/Meの方は「\windows」フォルダの下に、WindowsNT/2000/XPの方は「\winnt\system32\drivers\etc」の下に「services」というファイルに代表的なポート番号の一覧が格納されています。また、
IANAのWebサイトにもポート番号の一覧を示したページがあるのでこちらも参考にしてみてください。
また、1024番~49151番も他のアプリケーションによって割り当てられているポートですが登録されているアプリケーション以外で使用しても特に大きな問題はありません。49152~65535番のポートは自由に使用することができるようになっています。
◎ポート番号
■送信元ポート番号と宛先ポート番号
ポート番号には送信元ポート番号(Source Port Number)と宛先ポート番号(Destination Port
Number)の2種類の値が存在します。送信元ポート番号とは送信側の各コンピュータがその時点で使用されていないポート番号がランダムに(=動的に)割り当てられる番号のことで、宛先ポート番号とはこれから実現しようとしている各種通信サービス(アプリケーションプロトコル)の識別番号、すなわち上記で説明したウェルノウンポート番号のことをいいます。これらのことはネットサーフィンをしたり、メールなどを受信したあとに、コマンドプロンプトで「netstat」コマンドを実行すれば視覚的に理解しやすくなりますが、ここでは敢えてその説明を割愛させていただいて詳しく知りたい方は「
NETSTATコマンド」を参考にしてください。
この送信元ポート番号と宛先ポート番号はネットサーフィンをしたり、メールを受信したり、FTPでコンテンツをアップロード[ダウンロード]
したり、つまりなんらかの通信が発生した時点で必ずセットされるもので、例えば、特定のWebページを閲覧した場合には送信元ポート番号に25456番がセットされ、宛先ポート番号に80番がセットされるようになります。この25456番という数字は常にこの番号を使用すると言うわけでもなく上記で述べたようにランダムな値がセットされるようになります。このようにトランスポート層では、送信元と宛先の双方のポート番号セットで管理することによって、通信サービスの明確な識別と多重化を実現しているのです(メールを受信しながらWebページを閲覧したり、ブラウザを複数起動したりすることができるのです)。
よく、ルータのパッケージに最大セッション数が「254」とか「512」という値が記述されているを見たことがあると思いますが、仮に1つのコンピュータでブラウザを10個起動させた場合はセッションを10個分使用していることになるので(フレームページがあればページごとに1セッション)、理屈上、単純に計算しても「254÷10」=25台、「512÷10」=51台分のコンピュータしかインターネットに接続することができないことになります。このような問題を避けるためにルータには一定時間、無通信の状態が続いた場合に、そのセッションを開放する機能がついています。この開放する時間を1時間とか2時間とか長く設定していると、コンピュータの台数が多い環境ではいつまで経っても特定のコンピュータが通信を開始できない状態に陥いるので時間を適度な値にセットする必要があります。
◎送信元ポート番号と宛先ポート番号