要約
- RFC 675は、独立して選ばれたポート識別子が重複し得るとした。TCPを識別するアドレスを加えることで、ソケット名に相互接続ネットワーク全体の範囲を与えた。
- 接続は両端のソケットの組で表されるため、同じローカルソケットが複数の異なる接続に参加できた。
- 後続の仕様は、ホストアドレスとプロトコル選択をIPに、プロセス用ポートをトランスポート層に置いた。仕様の変化は読めるが、すべての実装がいつ採用したかは示していない。
後年の定義ではアドレスとポートが分担した
1980年のTCP仕様は、各ホスト内のポートを、Internet層から得るネットワークアドレスとホストアドレスに組み合わせてソケットを作る。接続は引き続きソケットの組で識別され、同じソケットは複数の接続に利用できる。RFC 761は、ポートとプロセスの対応付けを各ホストが独立して処理すると述べる。RFC 761 §§1.4, 2.7
対応するIP仕様では、ホストのアドレス指定とプロトコル選択がInternetヘッダーに置かれる。アドレスは送信元と宛先のホストを示し、プロトコル欄は次のレベルで使うプロトコルを示す。1981年のRFC 791もこの欄を保ち、RFC 793の用語集はTCPソケットをInternetアドレスとTCPポートの組合せと定義した。つまりネットワーク到達と次プロトコルへの振り分けはIP、プロセス選択はトランスポートに位置付けられる。RFC 760 §§1.1, 3.1 · RFC 791 §3.1 · RFC 793 §3.1・用語集
UDPの仕様にも同じ分担が見える。UDPヘッダーは送信元と宛先のポートを持ち、UDP/IPインターフェースはIPヘッダーからInternetアドレスとプロトコル欄を得る。ポートはアドレスとトランスポートの文脈で意味を持つのであり、すべてのネットワークとプロトコルでアプリケーションを名付ける万能の数字ではない。RFC 768 “Fields” および “IP Interface”
1974年の問題は、番号の選び方ではなかった
ポート番号が世界中で一意である必要はない。解釈するシステム内でプロセスを区別できればよい。1974年12月のRFC 675は、その範囲を明記した。OS、TCP、利用者はポート識別子を個別に選ぶため、異なる場所で同じ値が選ばれることがある。問題は数字の選び方そのものではなく、ローカルな数字に本来の範囲を越えた識別を求めることだった。
別々のTCPが同じ値を使う場面を考えてほしい。数字だけでは、どのTCP、どの接続ネットワークに向けるのか分からない。そこでRFC 675は、TCPを識別するインターネットアドレスとポート識別子を結び付けた。こうしてできるソケット名は、相互接続されたネットワーク全体で一意になるよう設計された。全てのローカルポートが世界で重複しないと仮定するのではなく、名前に必要な範囲を加える解決策である。RFC 675 §2.7
接続は二つの端点名の組で表す
ソケットと接続を同じものと考えると、もう片方の端点を見落としやすい。RFC 675は、接続を両端にあるソケットの組で特定する。ひとつのローカルソケットは、異なる相手側ソケットとの複数の接続に同時に使える。データの流れも双方向だ。ローカル名を一つの永続的な会話だけに割り当てる必要はなく、相手側の名前が接続を完成させる。
この組があれば、同じローカルポートが使われても接続を区別できる。サービスのローカル端点に複数の相手が接続すると、相手側の値が違うため、ソケットの組も異なる。RFCが記述するのはプロトコル上の端点名であり、利用者の認証、マシンの所有者、永久的な割当てを保証するものではない。
仕様には実務上の境界もある。端点の名前を定める一方、ポートをローカルプロセスに結び付ける処理は各ホストが担う。ネットワークを越えて端点を名付けることと、どのローカルプロセスへ渡すかを決めることは、関連していても同じ判断ではない。
名前が層の境界を示した
RFC 675のソケット名は、世界共通のポート割当て機関を求めずに、名前の衝突を解いた。ローカルで使う数字に、TCPの外側でも端点を区別するためのアドレス範囲を加えた。その後の仕様は仕事の境界をより明確にした。IPがホストと次のプロトコルを示し、トランスポートのポートがプロセスを選び、両端の名前の組が接続を表す。
ここで確認できるのは仕様に書かれた境界の変化であり、ある日を境に全ネットワークが移行したという証明ではない。RFCはフィールドの位置と接続名の構成を示すが、各版をどのネットワークが導入したか、OS内部でどう表現したかまでは示さない。裏付けられる教訓はより限定的だ。ポートがローカルサービスを指すには文脈が必要であり、接続の範囲は両端とネットワークアドレスから成る。
史料と限界
一次資料は RFC 675、RFC 760、RFC 761、RFC 768、RFC 791、RFC 793。これらは仕様の記述と用語を示すが、導入状況、普及時期、認証、永続的なマシン識別、現在の運用状況は立証しない。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加

