コネクションの要求を受け付けるポートを設定する
あるアプリケーションが遠隔のアプリケーション・プロセスに対してコネクションを確立するときは、遠隔のエンド・ポイントのどのプロセスに接続するかを指定する必要がある。通常利用される手法は、コネクション要求を待ち受ける
プロセスのトランスポート・アドレスを定義
することである。これらのエンド・ポイントは、インターネットではポート(port)
と呼ばれる。
トランスポート/ネットワーク層でポートの用語が違う
ここでは
トランスポート層固有のエンド・ポイントのことを、一般的な用語であTSAP(Transport Service Access Point: トランスポート・サービス・アクセス・ポイント)
で表す。それと同じように、ネットワーク層におけるエンド・ポイント(すなわちネットワーク層のアドレス)をNSAP(Network Service Access Point:ネットワーク・サービス・アクセス・ポイント)
と呼ぶ。IPアドレスはNSAPの一例である。
NSAPは一つ、TSAPはプロセスごとにある。
TSAPを持つ目的は、一部のネットワークにおいて
各コンピュータはNSAPを一つだけ持つため、NSAPを共有する複数のトランスポート・エンド・ポイントを識別する
ための手段が必要がだからである。
- 自身に対してLISTEN呼び出しによってTSAPを結びつける
- CONNECT要求で相手のTSAPに対してトランスポートコネクションが確立される。
どのプロセスがどのポートと結びついているのかを知るのか?
ホスト1のユーザー・プロセスはどうやってメール・サーバーがTSAP1522に結び付けられていることを知るのだろうか。
歴史的にメール・サーバーがTSAP1522に結び付けられ、ネットワーク・ユーザーがそれを学ぶ
ということが考えれる。この場合、サービスは固有のTSAPアドレスを持ち、例えばUNIXの/etc/serviceファイルのようなよく知られた場所のファイルに登録
される。そのファイルはどのサーバーがどのポートに固定的に結び付けられているかをメール・サーバーがTCP25番ポートを使用しているといったような事実とともに管理している。
/etc/servicesを調べる
/etc/servicesファイルは、TCPやUDPのポート番号と、そのポートを利用するサービス(あるいはプロトコル名)の情報を対応させるファイルです。
実際に/etc/servicesファイルの内容を見てみましょう。
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol