Zum Hauptinhalt springen

III. Die Host-Software

Aufbau einer Verbindung​

Die einfachste Verbindung, die wir uns vorstellen können, ist, wenn der lokale Host als TTY fungiert und den entfernten Host anwählt. Nach einiger Überlegung der Probleme beim Initiieren und Beenden einer solchen Verbindung wurde beschlossen, Verbindung 0 für die Kommunikation zwischen Host-Betriebssystemen zu reservieren. Die verbleibenden 31 Verbindungen sollen daher als Wählleitungen verwendet werden.

Jedes Host-Betriebssystem muss seinen Benutzerprogrammen ein Primitiv (primitive) zum Aufbau einer Verbindung mit einem entfernten Host und ein Primitiv zum Trennen der Verbindung bereitstellen. Wenn diese Primitive aufgerufen werden, muss das Betriebssystem eine freie Verbindung auswählen und eine Nachricht über Verbindung 0 an den entfernten Host senden, die eine Verbindung auf der ausgewählten Verbindung anfordert. Das Betriebssystem im entfernten Host muss zustimmen und eine Akzeptanznachricht über Verbindung 0 zurücksenden. Falls beide Hosts dieselbe Verbindung auswählen, um eine Verbindung zu initiieren, und beide im Wesentlichen zur gleichen Zeit Anforderungsnachrichten senden, wird ein einfaches Prioritätsschema aufgerufen, bei dem der Host mit niedrigerer Priorität nachgibt und eine andere freie Verbindung auswählt. Ein verwendbares Prioritätsschema ist einfach die Rangfolge der Hosts nach ihren Identifikationsnummern. Beachten Sie, dass beide Hosts wissen, dass gleichzeitige Anforderungen gestellt wurden, aber sie ergreifen komplementäre Aktionen: Der Host mit höherer Priorität ignoriert die Anforderung, während der Host mit niedrigerer Priorität sowohl eine Akzeptanz als auch eine weitere Anforderung sendet.

Die so hergestellte Verbindung ist eine TTY-ähnliche Verbindung im Zustand vor dem Einloggen. Dies bedeutet, dass das Betriebssystem des entfernten Hosts die Verbindung zunächst so behandelt, als hätte sich gerade ein TTY eingewählt. Der entfernte Host wird dieselben Echos erzeugen, dieselbe Anmeldesequenz erwarten und nach denselben Unterbrechungszeichen suchen.

Hochvolumige Übertragung​

Fernschreiber, die als Terminals fungieren, haben zwei besondere Nachteile, wenn wir die Übertragung einer großen Datei in Betracht ziehen. Der erste ist, dass einige Zeichen spezielle Unterbrechungszeichen sind. Der zweite ist, dass oft spezielle Pufferungstechniken eingesetzt werden, die nur für langsame zeichenweise Übertragung geeignet sind.

Wir definieren daher eine andere Klasse von Verbindungen, die für die Übertragung von Dateien oder anderen großen Datenmengen verwendet werden soll. Um diese Klasse von Verbindungen zu initiieren, müssen Benutzerprogramme an beiden Enden einer etablierten TTY-ähnlichen Verbindung die Einrichtung einer dateiähnlichen Verbindung parallel zur TTY-ähnlichen Verbindung anfordern. Das Prioritätsschema kommt wieder ins Spiel, denn der Host mit höherer Priorität sendet eine Nachricht über Verbindung 0, während der Host mit niedrigerer Priorität darauf wartet. Die Benutzerprogramme sind natürlich nicht davon betroffen. Die Auswahl der freien Verbindung erfolgt durch den Host mit höherer Priorität.

Dateiähnliche Verbindungen zeichnen sich dadurch aus, dass keine Suche nach Unterbrechungszeichen stattfindet und Pufferungstechniken verwendet werden, die für höhere Datenraten geeignet sind.

Eine Zusammenfassung der Primitive​

Jedes Host-Betriebssystem muss seinen Benutzern mindestens die folgenden Primitive bereitstellen. Diese Liste ist bekanntermaßen notwendig, aber nicht ausreichend.

a) TTY-ähnliche Verbindung mit Host x initiieren.

b) Verbindung beenden.

c) Zeichen über TTY-ähnliche Verbindung senden/empfangen.

d) Dateiähnliche Verbindung parallel zu TTY-ähnlicher Verbindung initiieren.

e) Dateiähnliche Verbindung beenden.

f) Über dateiähnliche Verbindung senden/empfangen.

Fehlerprüfung​

Wir schlagen vor, dass jede Nachricht in ihrem Körper eine Nachrichtennummer, Bitanzahl und Prüfsumme trägt, die für den IMP transparent ist. Für eine Prüfsumme schlagen wir eine 16-Bit-End-Around-Carry-Summe (end-around-carry sum) vor, die über 1152 Bits berechnet und dann zyklisch um ein Bit nach rechts verschoben wird. Die Rechtsverschiebung alle 1152 Bits soll Fehler bei der Nachrichtenwiederzusammensetzung durch die IMPs erfassen.

Engere Interaktion​

Die oben beschriebenen Primitive zeigen, wie ein Benutzer eine entfernte Einrichtung einfach nutzen kann. Sie geben keinen Aufschluss darüber, wie eine viel kompliziertere Nutzung des Netzwerks durchgeführt werden soll. Konkret sind wir besorgt über die Tatsache, dass an einigen Standorten viel Arbeit investiert wurde, um den Computer hochgradig auf eine ausgeklügelte Konsole reagieren zu lassen. Cullers Konsolen an der UCSB und Englebarts am SRI sind mindestens zwei Beispiele. Es ist klar, dass Verzögerungen von etwa einer halben Sekunde für triviale echoähnliche Antworten die Interaktion bis zu dem Punkt degradieren, an dem die Ausgeklügeltheit der Konsole irrelevant wird.

Wir glauben, dass die meiste Konsoleninteraktion in zwei Teile geteilt werden kann, einen im Wesentlichen lokalen, sofortigen und trivialen Teil und einen entfernten, längeren und bedeutenderen Teil. Als einfaches Beispiel betrachten Sie einen Benutzer an einer Konsole, die aus einer Tastatur und einem Auffrischungsbildschirm besteht. Das Programm, in das der Benutzer tippt, akkumuliert eine Zeichenkette, bis ein Wagenrücklauf auftritt, und verarbeitet dann die Zeichenkette. Während Zeichen getippt werden, zeigt es die Zeichen auf dem Bildschirm an. Wenn ein Löschzeichen (rubout) getippt wird, löscht es das vorherige Nicht-Löschzeichen. Wenn der Benutzer H E L L O <- <- P <CR> tippt, wobei <- Löschen und <CR> Wagenrücklauf ist, hat er neun Tastenanschläge gemacht. Wenn jeder dieser Tastenanschläge dazu führt, dass eine Nachricht gesendet wird, die wiederum Anweisungen an unsere Anzeigestation aufruft, werden wir schnell gelangweilt sein.

Eine bessere Lösung wäre, das Frontend des entfernten Programms -- d.h. den Teil, der nach <- und <CR> sucht -- in unserem Computer resident zu haben. In diesem Fall würde nur eine Fünf-Zeichen-Nachricht gesendet, d.h. H E L P <CR>, und der Bildschirm würde lokal verwaltet.

Wir schlagen vor, diese Lösung zu implementieren, indem wir eine Sprache für die Konsolensteuerung erstellen. Diese Sprache, derzeit DEL genannt, würde von Subsystemdesignern verwendet werden, um zu spezifizieren, welche Komponenten in einem Terminal benötigt werden und wie das Terminal auf Eingaben von seiner Tastatur, Lincoln Wand usw. reagieren soll. Dann würde der entfernte Host als Teil des anfänglichen Protokolls dem lokalen Host den Quellsprachentext des Programms senden, das die Konsole steuert. Dieses Programm würde vom Subsystemdesigner in DEL geschrieben, aber lokal kompiliert werden.

Die Spezifikationen von DEL werden diskutiert. Die folgenden Diagramme zeigen die Abfolge der Aktionen.

A. Vor dem Verbindungsaufbau​

         /                                                      \
| +-----------+ +-----------+ |
| | | | | |
| | | | | |
| | terminal | | terminal | |
| | | | | |
| | | | | |
| +-----+-----+ +-----+-----+ |
| | | |
| | | |
| | | |
| +-----+-----+ +-----------+ |
| | | | Request connection | | | |
UCLA { | | | -> over link 25 | | | } SRI
| | +-+-+ | +-+ +-+ | +-+-+ | |
| | | OS|---+-=|I|----------|I|=-+---| OS| | |
| | +-+-+ | +-+ +-+ | +---+ | |
| | | | | |
| | | | | |
| +-----------+ +-----------+ |
| HOST: UCLA HOST: SRI |
\ /

B. Nach Verbindungsaufbau und Anmeldung​

         /                                                      \
| +-----------+ +-----------+ |
| | | | | |
| | | | | |
| | terminal | | terminal | |
| | | | | |
| | | | | |
| +-----+-----+ +-----+-----+ |
| | | |
| | | |
| | | |
| +-----+-----+ "Please send front"+-----------+ |
| | | | end control" | | | |
UCLA { | | | -> | | | } SRI ___
| | +-+-+ | +-+ +-+ | +--+---+ | | / |
| | | OS|---+-=|I|----------|I|=-+--|OS|NLS| +----+---| |
| | +-+-+ | +-+ +-+ | +------+ | | |___/
| | | DEL prog. | | | | |
| | | <- | | | |____|
| +-----------+ +-----------+ |
| HOST: UCLA HOST:SRI |
\ /

C. Nach Empfang und Kompilierung des DEL-Programms​

         /                                                     \
| +-----------+ +-----------+ |
| | | | | |
| | | | | |
| | terminal | | terminal | |
| | | | | |
| | | | | |
| +-----+-----+ +-----+-----+ |
| |Trivial | |
| |Responses | |
| | | |
| +-----+------+ +-----------+ |
| | | | | | | |
UCLA { | | | Major Responses | | | } SRI ___
| | +--+--+ | +-+ +-+ | +--+---+ | | / |
| | |DEL |---+-=|I|----------|I|=-+--|OS|NLS| +---+---| |
| | |front| | +-+ +-+ | +------+ | | |___/
| | | end | | | | | | |
| | |prog.| | | | | |____|
| | +-----+ | | | |
| | | OS | | | | |
| | +-----+ | | | |
| | | | | |
| +------------+ +-----------+ |
| HOST: UCLA HOST: SRI |
\ /

Offene Fragen​

  1. Wenn die IMPs Codekonvertierung durchführen, ist die Prüfsumme nicht korrekt.

  2. Das Verfahren zum Anfordern des DEL-Frontends ist noch nicht spezifiziert.