Zusammenfassung

  • Jon Postel und Joyce Reynolds beschrieben im Mai 1983 in RFC 860 die TELNET-Option TIMING-MARK mit der Nummer 6. Eine Seite fordert mit DO TIMING-MARK eine Marke an; die andere kann WILL TIMING-MARK an der richtigen Stelle ihres Rückstroms einsetzen, nachdem die Marke ihre Puffer durchlaufen hat.
  • Das anschauliche Problem ist ein falscher Befehl mit bereits vorausgetipptem Text. Der Server verwirft ankommende Zeichen bis zur Rückkehr der Marke und interpretiert danach wieder Eingaben, die der Nutzer nach dem sichtbaren Fehler getippt hat. Die anfordernde Seite entscheidet über das Verwerfen.

Jemand tippt einen Befehl und gleich noch einen, weil der Computer sich mit der Antwort Zeit lässt. Der Server findet im ersten einen Fehler und zeigt ein Fragezeichen. Der zweite Befehl kann längst im Terminalrechner, auf der Verbindung oder im Eingangspuffer des Servers stehen. Würde der Server ihn unbesehen als neue Anweisung lesen, bekäme ein einzelner Tippfehler einen ganzen Rattenschwanz. RFC 860 wollte wissen, wo der alte Text endet.

Die TELNET-Grundspezifikation beschrieb die Verbindung in beide Richtungen. Die Optionsregeln ließen zusätzliche Verhaltensweisen anbieten und ablehnen. TIMING-MARK benutzte diese Grammatik für ein konkretes Pufferproblem. Der Name klingt nach Stoppuhr. Im Fehlerfall zählt jedoch die Position einer Marke im Datenstrom: Die Maschine sieht die Zeichen in ihrer Warteschlange, der Mensch sieht die Meldung auf dem Bildschirm.

Der Server sendet IAC DO TIMING-MARK. Stimmt die Gegenseite zu, fügt sie IAC WILL TIMING-MARK an der passenden Stelle in den Rückstrom ein. RFC 860 zeichnet den Weg durch den Ausgangspuffer der Gegenseite zum Terminal und durch deren Eingangspuffer zurück. Wenn WILL beim Server ankommt, gibt es einen nachvollziehbaren Wendepunkt. Der Server kann die Zeichen vor diesem Punkt aussortieren und die Eingaben nach dem sichtbaren Fehler wieder ernst nehmen.

Die Anleitung führt den Ablauf Schritt für Schritt vor. Zuerst schickt der Server Wagenrücklauf, Zeilenvorschub und ein Fragezeichen. Dann fordert er die Marke an und sendet die Fehlermeldung. Bis WILL zurückkehrt, liest er weitere Eingaben und wirft sie weg. Danach setzt er die Befehlsauswertung fort. Die Grenze liegt unmittelbar vor dem ersten Zeichen, das der Nutzer nach dem Fragezeichen eingegeben hat. Ein bloßer Blick auf den Füllstand des Serverpuffers hätte diesen Unterschied verschluckt.

Wer den Müll wegwirft, steht ebenfalls im Text. RFC 860 überträgt diese Aufgabe dem Sender von DO. Die Gegenseite liefert bei Zustimmung eine zuverlässig platzierte Marke; der Anforderer räumt seine eigene Warteschlange auf. Die Methode funktioniert auch umgekehrt. Ein Terminal kann eine Marke vom Server verlangen, alte Serverausgaben bis zum Rücklauf von WILL ausblenden und erst danach neue Ausgaben anzeigen, die auf einen frischen Befehl folgen.

Die Antworten sind unterschiedlich stark. WILL versichert die Platzierung am verlangten Punkt. WON'T verweigert diese Zusage, bestätigt aber den Empfang vorausgegangener Daten. Für das Aussortieren nach einer sichtbaren Fehlermeldung braucht der Server die stärkere Aussage über den Wendepunkt. DON'T meldet, dass ein früheres WILL ignoriert wurde. Ohne Vereinbarung versucht die Verbindung keine ausdrückliche Synchronisierung. RFC 860 nennt auch die Messung einer Umlaufzeit als Anwendung. Ein bekannter Wendepunkt erleichtert die Messung; für das Aufräumen zählt seine Lage im Strom.

Sogar ein ungeduldiger Nutzer hat Platz in der Beschreibung. Seine Terminalsoftware darf WILL an einer von ihm bestimmten Stelle vorwegschicken und dann weiter tippen. Trifft die spätere DO-Anfrage ein, muss die Software sie passend abfangen. Der Sonderfall zeigt den eigentlichen Kniff: Der Augenblick des Menschen liegt weder genau im Server noch genau in der Leitung. Erst eine durchlaufende Marke macht ihn für beide Maschinen greifbar.

Ein Fragezeichen auf dem Bildschirm war schnell geschrieben. Um nach diesem Fragezeichen an der richtigen Stelle weiterzumachen, brauchte die Verbindung einen Hinweg, einen Rückweg und einen lokalen Papierkorb. So bekam das Weiterreden der Tastatur endlich eine Grenze.