II データ構造
-
接続表
-
プロセス表
-
入力リンク表
-
出力リンク表
-
リンク割当て表
接続表
これはローカルソケットに関するすべての情報、特にソケットが接続に関与しているかどうか、関与している場合は接続がどのような状態にあるかを保持する。エントリはローカルソケットによってキー付けされるが、他の表もこの表へのポインタを持っている (プロセス表、入力リンク表、出力リンク表を参照)。
各エントリは次の情報を含む。
-
ローカルソケット (キー)
-
外部ソケット
-
リンク
-
接続状態
-
フロー状態とバッファ制御
-
ユーザーのプロセスへのポインタ
-
再接続制御状態
-
待機中の発呼側の待ち行列
ローカルソケットは 32 ビットの数値である。特定のソケットに対するエントリが存在しない場合は、ヌル値で作成してよい。
外部ソケットは 40 ビットの数値である。接続が確立されていない場合、このフィールドは未割当てのままになる。
リンクは 8 ビットの数値であり、送信側から受信側へデータが送られる際のリンクである。ソケットは、その下位ビットがゼロである場合に限り受信ソケットである。
接続状態は、接続が開いているかどうかなどを指す。次の可能性が生じうる。
-
ローカルプロセスが接続を要求した
-
外部プロセスが接続を要求した
-
接続が確立された
-
再接続が進行中である
-
クローズ待ち
-
再接続待ち
フロー状態とバッファ制御とは、RFNM の送信を確認すること、停止、一時停止、再開の各コマンドを受理すること、および受信データまたは送信データを追跡することを指す。
ユーザーのプロセスへのポインタは、そのプロセスが接続を要求した場合に必要である。
再接続が進行中である場合は、イベントの順序を追跡する必要がある。再接続に関与しているソケットは、端であるか中間であるかのいずれかである。中間である場合、同じプロセスに付随するもう一方の中間の 8 ビット名を格納し、END コマンドと RDY コマンドの受信を記録する必要がある。
最後に、ソケットがビジーであるとき、またはどのプロセスもそのソケットを確保していないときに RFC が受信された場合、その RFC は、名前を付けられたローカルソケットの待ち行列に先入れ先出しで積まれる。
プロセス表
この表はプロセスとソケットを対応付ける。システムコールを処理するために用いられる。
入力リンク表
この表は受信リンクとローカルソケットを対応付ける。受信メッセージが誰宛てであるかを決定するために用いられる。
出力リンク表
この表は送信リンクとローカルソケットを対応付ける。RFNM と RSM コマンドを解釈するために用いられる。
リンク割当て表
リンクは受信側によって割り当てられる。この表はどのリンクが空いているかを示す。