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

V. NCP 内のテーブル

NCP のデータベースの大部分は連想テーブルにあるものと想定する。ここで「連想」とは、キーを与えられると、対応するエントリへのポインタを返して成功するか、キーに対応するエントリがなければ失敗する、何らかの検索ルーチンが存在することを意味する。主要なテーブルは次のとおりである。

1. ランデブーテーブル​

このテーブルは接続の属性を保持する。テーブルはローカルソケットによってアクセスされるが、他のテーブルが既存のエントリへのポインタを持つこともある。

エントリの構成要素は次のとおりである。

  • (a) ローカルソケット
  • (b) 外部ソケット
  • (c) リンク
  • (d) 接続状態
  • (e) フロー状態
  • (f) データキュー
  • (g) 呼び出しキュー
  • (h) ポートポインタ
  • (i) 相手側のバッファサイズ(送信側でのみ必要)
  • (j) エラー状態

エントリは、CONNECT または LISTEN システムコールが実行されたとき、あるいは接続要求を受信したときに作成される。いくつかのフィールドは、接続が確立されるまで使われないままである。

2. 入力リンクテーブル​

入力インタプリタは、外部ホストとリンクを連結したものを入力テーブルへのキーとして用いる。このテーブルは、ランデブーテーブルへのポインタを提供することで、到着リンク上のユーザ宛てメッセージの処理に用いられる。

3. 出力リンクテーブル​

入力インタプリタは、送信したメッセージに対して RFNM が返ってきたときに、出力リンクテーブルを用いてフロー状態にアクセスする。出力リンクテーブルはホストとリンクをキーとし、ランデブーテーブルへのポインタを提供する。

4. ポートテーブル​

システムコールインタプリタは、プロセス識別子とポート識別子を連結したものをキーとして、ランデブーテーブルへのポインタを得る。

5. 出力制御コマンドテーブル​

システムコールインタプリタと入力インタプリタは、このテーブルを用いて適切な出力制御コマンドキューにエントリを追加する。コマンドは、外部ホストごとに対応する別々のテーブルエントリにキューイングされる。出力の前に、キューの内容は連結されて 1 つの大きな制御メッセージになる。エントリの構成要素は次のとおりである。

  • (a) ホスト
  • (b) 出力制御コマンドキュー

6. 出力要求キュー​

このキューには、ネットワークへの送信を要するデータを持つ接続ごとに 1 つのエントリが含まれる。エントリは接続ごとに 1 つだけであり、データの最後のパケットが送信されたときに削除され、ユーザがデータ送信のシステム要求を行うたびに登録される。

送信が完了しなかった場合(メッセージが長すぎる場合)や、フロー制御機構によって送信が妨げられた場合、エントリは再挿入される。エントリの構成要素はローカルソケットのみである。

7. ホスト生存テーブル​

これは、稼働中のホストを列挙した単純なテーブルである。接続を確立する前と、データを送信する前に、宛先ホストが実際に存在することを確かめるためにこのテーブルが参照される。現時点では、プロトコルはホストの起動/停止の状況に対して従うべき手順を定義していない。NWG/RFC#57 を参照のこと。

8. リンク割り当てテーブル​

リンク番号は受信側が割り当てる。このテーブルは、どのリンクが空いており、したがって割り当て可能であるかを記録する。