メインコンテンツまでスキップ

II データ構造

  1. 接続表

  2. プロセス表

  3. 入力リンク表

  4. 出力リンク表

  5. リンク割当て表

接続表​

これはローカルソケットに関するすべての情報、特にソケットが接続に関与しているかどうか、関与している場合は接続がどのような状態にあるかを保持する。エントリはローカルソケットによってキー付けされるが、他の表もこの表へのポインタを持っている (プロセス表、入力リンク表、出力リンク表を参照)。

各エントリは次の情報を含む。

  1. ローカルソケット (キー)

  2. 外部ソケット

  3. リンク

  4. 接続状態

  5. フロー状態とバッファ制御

  6. ユーザーのプロセスへのポインタ

  7. 再接続制御状態

  8. 待機中の発呼側の待ち行列

ローカルソケットは 32 ビットの数値である。特定のソケットに対するエントリが存在しない場合は、ヌル値で作成してよい。

外部ソケットは 40 ビットの数値である。接続が確立されていない場合、このフィールドは未割当てのままになる。

リンクは 8 ビットの数値であり、送信側から受信側へデータが送られる際のリンクである。ソケットは、その下位ビットがゼロである場合に限り受信ソケットである。

接続状態は、接続が開いているかどうかなどを指す。次の可能性が生じうる。

  1. ローカルプロセスが接続を要求した

  2. 外部プロセスが接続を要求した

  3. 接続が確立された

  4. 再接続が進行中である

  5. クローズ待ち

  6. 再接続待ち

フロー状態とバッファ制御とは、RFNM の送信を確認すること、停止、一時停止、再開の各コマンドを受理すること、および受信データまたは送信データを追跡することを指す。

ユーザーのプロセスへのポインタは、そのプロセスが接続を要求した場合に必要である。

再接続が進行中である場合は、イベントの順序を追跡する必要がある。再接続に関与しているソケットは、端であるか中間であるかのいずれかである。中間である場合、同じプロセスに付随するもう一方の中間の 8 ビット名を格納し、END コマンドと RDY コマンドの受信を記録する必要がある。

最後に、ソケットがビジーであるとき、またはどのプロセスもそのソケットを確保していないときに RFC が受信された場合、その RFC は、名前を付けられたローカルソケットの待ち行列に先入れ先出しで積まれる。

プロセス表​

この表はプロセスとソケットを対応付ける。システムコールを処理するために用いられる。

入力リンク表​

この表は受信リンクとローカルソケットを対応付ける。受信メッセージが誰宛てであるかを決定するために用いられる。

出力リンク表​

この表は送信リンクとローカルソケットを対応付ける。RFNM と RSM コマンドを解釈するために用いられる。

リンク割当て表​

リンクは受信側によって割り当てられる。この表はどのリンクが空いているかを示す。