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.
2. Die Eingangs-Link-Tabelle
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.
3. Die Ausgangs-Link-Tabelle
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.
8. Die Link-Zuweisungstabelle
Link-Nummern werden vom Empfänger vergeben. Diese Tabelle verzeichnet, welche Links frei sind und daher vergeben werden können.