Zum Hauptinhalt springen

V. Tabellen im NCP

Wir stellen uns vor, dass der Großteil der Datenbasis des NCP in assoziativen Tabellen liegt. Mit „assoziativ“ meinen wir, dass es eine Suchroutine gibt, der ein Schlüssel übergeben wird und die entweder erfolgreich mit einem Zeiger auf den entsprechenden Eintrag zurückkehrt oder fehlschlägt, wenn kein Eintrag zum Schlüssel passt. Die wichtigsten Tabellen sind folgende:

1. Die Rendezvous-Tabelle​

Diese Tabelle enthält die Attribute einer Verbindung. Der Zugriff auf die Tabelle erfolgt über den lokalen Socket, doch andere Tabellen können Zeiger auf vorhandene Einträge enthalten.

Die Bestandteile eines Eintrags sind:

  • (a) Lokaler Socket
  • (b) Fremder Socket
  • (c) Link-Nummer
  • (d) Verbindungszustand
  • (e) Flusszustand
  • (f) Datenwarteschlange
  • (g) Anrufwarteschlange
  • (h) Port-Zeiger
  • (i) Deren Puffergröße (nur auf der Sendeseite benötigt)
  • (j) Fehlerzustand

Ein Eintrag wird angelegt, wenn entweder ein Systemaufruf CONNECT oder LISTEN ausgeführt oder eine Verbindungsanforderung empfangen wird. Verschiedene Felder bleiben ungenutzt, bis die Verbindung hergestellt ist.

Der Eingabeinterpreter verwendet die Verkettung von fremdem Host und Link als Schlüssel für die Eingangstabelle. Die Tabelle dient bei der Verarbeitung einer für einen Benutzer bestimmten Nachricht auf einem eingehenden Link dazu, einen Zeiger in die Rendezvous-Tabelle zu liefern.

Der Eingabeinterpreter verwendet die Ausgangs-Link-Tabelle, um auf den Flusszustand zuzugreifen, wenn RFNMs für gesendete Nachrichten zurückkommen. Die Ausgangs-Link-Tabelle wird über Host und Link adressiert und liefert einen Zeiger in die Rendezvous-Tabelle.

4. Die Port-Tabelle​

Der Systemaufrufinterpreter verwendet die Verkettung von Prozesskennung und Portkennung als Schlüssel, um einen Zeiger in die Rendezvous-Tabelle zu erhalten.

5. Die Tabelle der ausgehenden Steuerbefehle​

Der Systemaufrufinterpreter und der Eingabeinterpreter verwenden diese Tabelle, um Einträge in den entsprechenden Warteschlangen für ausgehende Steuerbefehle vorzunehmen. Befehle werden in getrennten Tabelleneinträgen je fremdem Host eingereiht. Vor der Ausgabe wird der Inhalt der Warteschlange zu einer großen Steuernachricht verkettet. Die Bestandteile eines Eintrags sind:

  • (a) Host-Rechner
  • (b) Warteschlange für ausgehende Steuerbefehle

6. Die Ausgabeanforderungs-Warteschlange​

Diese Warteschlange enthält einen Eintrag für jede Verbindung, deren Daten ins Netz übertragen werden müssen. Es gibt nur einen Eintrag pro Verbindung; er wird gelöscht, wenn das letzte Datenpaket übertragen ist, und immer dann angelegt, wenn ein Benutzer eine Systemanforderung zur Datenübertragung stellt.

Der Eintrag wird erneut eingefügt, wenn die Übertragung nicht abgeschlossen ist (Nachricht zu lang) oder durch den Flusskontrollmechanismus verhindert wird. Der einzige Bestandteil eines Eintrags ist ein lokaler Socket.

7. Die Tabelle der aktiven Hosts​

Dies ist eine einfache Tabelle, in der die aktiven Hosts aufgeführt sind. Sie wird vor dem Aufbau einer Verbindung und vor dem Senden von Daten geprüft, um sicherzustellen, dass der Zielhost tatsächlich existiert. Derzeit legt das Protokoll kein Verfahren für die Zustände Host up/Host down fest. Siehe NWG/RFC#57.

Link-Nummern werden vom Empfänger vergeben. Diese Tabelle verzeichnet, welche Links frei sind und daher vergeben werden können.