Zum Hauptinhalt springen

VIII. Algorithmen für den Eingabeinterpreter

Es folgt eine knappe Beschreibung der Reaktionen des NCP auf eingehende Netzbefehle. CS bezeichnet stets den Verbindungszustand (Connection State). Man beachte: CLOSE ist ein vom lokalen Benutzerprozess ausgeführter Systemaufruf, CLS ist ein Netzbefehl.

NOP​

Verwerfen.

RFC (RTS or STR)​

Existiert kein Eintrag, einen mit Status = PENDING CALL anlegen und die Nachricht einreihen.

Wenn CS = LISTENING, den Eintrag einreihen, in den Zustand RFC-RCVD wechseln und den Benutzer über die Anforderung informieren.

Wenn CS = RFC-SENT, der neue RFC aber nicht zur Anforderung passt, den RFC ablehnen.

In allen anderen Fällen den RFC auf Übereinstimmung prüfen. Gibt es keine, den RFC einreihen. Passt der RFC, dann gilt, wenn:

  • CS = RFC-SENT: Wir wechseln in den Zustand OPEN.
  • CS = CLS-WAIT: Der RFC wird ignoriert.
  • Andernfalls ist die Anforderung in allen Zuständen unzulässig, die anzeigen, dass sie bereits empfangen wurde (dies sind die Zustände 1,3,4,6,8,9).

In jedem Fall gilt: Verursacht die Verarbeitung des RFC einen Überlaufzustand (Ressourcen erschöpft), die Verbindung ablehnen (ein CLS senden).

CLS​

Die Warteschlange anstehender Anrufe wird durchsucht. Passt das CLS nicht zur aktuellen Anforderung, wohl aber zu einer anderen Anforderung, diese Anforderung löschen und ein CLS ausgeben. Gibt es keine Übereinstimmung, wird das CLS ignoriert.

Passt das CLS zur aktuellen Anforderung und ist CS =

  • PENDING: die aktuelle Anforderung löschen. Ist die Anforderungswarteschlange leer, den Eintrag löschen; andernfalls den Eintrag unverändert lassen.
  • RFC-RCVD: ein CLS ausgeben und in den Zustand ABORT wechseln.
  • ABORT: ignorieren.
  • RFC-SENT: ein CLS ausgeben. Ist die Warteschlange anstehender Anrufe leer, den Eintrag löschen, sonst in den Zustand PENDING wechseln.
  • OPEN: Befinden wir uns auf der Empfangsseite, ist die Reaktion identisch mit der Reaktion bei RFC-SENT. Befinden wir uns auf der Sendeseite, die Datenwarteschlange leeren und, falls noch ein RFNM aussteht, in den Zustand RFNM-WAIT wechseln. Andernfalls ist die Reaktion identisch mit der Reaktion bei RFC-SENT.
  • CLS-WAIT: ein CLS ausgeben und, wenn die Warteschlange anstehender Anrufe leer ist, den Eintrag löschen, andernfalls CS = PENDING.
  • DATA-WAIT: die Datenwarteschlange leeren und in den Zustand RFNM-WAIT wechseln. Ein passendes CLS kann in den Zuständen CLOSED oder LISTENING nicht auftreten.

ERR​

Fehler werden zur späteren Bearbeitung durch Systemprogrammierer eingereiht und gelten als Systemfehler in dem Host, der den Austausch veranlasst hat. (Keinem Zustand zugeordnet.)

ECO​

Der Opcode wird in ERP geändert und erneut übertragen (keinem Zustand zugeordnet).

ERP​

Beim Empfang eines ERP gibt das System den Text des Befehls an den Prozess zurück, der das ECO ausgegeben hat.

INR, INS​

Diese Befehle sind nur im Zustand OPEN zulässig. Beim Empfang eines INTERRUPT bewirkt das System, dass ein Ereignis an den zugehörigen Prozess gesendet wird. Ein INTERRUPT wird in den Zuständen CLS-WAIT, DATA-WAIT und RFNM-WAIT ignoriert. In jedem anderen Zustand ist es ein Fehler.

ALL​

ALLOCATE ist nur im Zustand OPEN gültig und darf nur an einen Sende-Socket gesendet werden. Der NCP erhöht das Feld 'Their Size' im zugehörigen Eintrag der Rendezvous-Tabelle um die im ALLOCATE-Befehl angegebene Größe.

In den Zuständen CLS-WAIT und DATA-WAIT wird dieser Befehl ignoriert; in jedem anderen Zustand ist er ein Fehler.

Data-RFNM​

Im Zustand OPEN das Feld Flow Control Status im entsprechenden Eintrag der Rendezvous-Tabelle als RFNM-RECVD markieren und bei Bedarf weitere Daten senden.

Im Zustand DATA-WAIT den Flow Control Status fortschreiben. Ist die Datenwarteschlange leer, ein CLS ausgeben und in den Zustand CLS-WAIT wechseln; andernfalls die nächste Nachricht übertragen.

Im Zustand RFNM-WAIT den Flow Control Status fortschreiben und ein CLS ausgeben. Ist die Warteschlange anstehender Anrufe leer, den Eintrag der Rendezvous-Tabelle löschen, andernfalls CS = PENDING.

In allen anderen Zuständen ist ein Data-RFNM ein Fehler.