パケットフィルタリングは、送信先アドレスと送信元アドレスをもとにパケットのフィルタリングを行います。ここでいう“アドレス”とは、IPアドレスと、サービスのポート番号から成ります。IPアドレスはインターネット上のホストを特定しますが、ポート番号は、そのホスト上でパケットを送受信するアプリケーションを特定します。
IPアドレスが住所だとすると、ポート番号は各サービスの窓口のようなものです。例えば、SMTPは25番、POPは110番というふうに、主要なサービスには「well-knownポート」と呼ばれるポート番号が割り当てられています(図2)。これはサーバ側のポートですが、クライアント側ではOSが適当に割り当てるポート(通常、1023番より大きいポート番号が割り当てられる)が使用されます。このように、IPアドレスとポート番号の組み合わせを使用することによって、クライアントとサーバ間で、お互いのアプリケーションに確実にパケットを届けることができるのです。
さらにTCPでは、データのやりとりを始めるまでに、「3ウェイ・ハンドシェイク」と呼ばれる手順で接続を確立する必要があります。3ウェイ・ハンドシェイクでは、「SYN」「SYN+ACK」「ACK」という3種類のフラグがセットされたパケットがやりとりされます(図3)。
ここで、(1)のSYNフラグが立ったパケット(接続要求)を待ち受けている状態は、サーバ側のポートが「LISTEN」状態にあるといいます。また、(3)の接続が確立された状態を「ESTABLISHED」な状態にあるといいます。
例えば、標準的な構成でインストールされたSolaris 8のポートの状態を調べると、以下のようになっています(リスト1)。
ここで、(1) (2)はそれぞれサーバ側とクライアント側のIPアドレスとポート番号、(3)が接続の状態を表しています。特に、(3)でLISTENとなっているポートは、ポートが開いている状態、つまり接続を受け付ける状態にあることを表しています。ここで、ポートを開いているのは、サービスを提供しているプロセス(アプリケーション)です。つまり、ポートがLISTEN状態にあるということは、そのポートを開いているプロセスが必ず存在します。この状態で、起動しているプロセスを調べると、以下のようになっています(リスト2)。
Copyright © ITmedia, Inc. All Rights Reserved.