Zusammenfassung

  • RFC 794 beschreibt einen Terminalprozess, der trotz laufender Verbindungen ein weiteres TCP-LISTEN bereithält. So kann er eine neue Anfrage annehmen und ihre Priorität mit der vorhandenen Arbeit vergleichen.
  • Im FTP-Beispiel verdrängt eine Anfrage mit „flash-override“-Vorrang womöglich eine Routineverbindung. Der empfangende Dienst erledigt den Abbruch; am Ausgangsrechner kann das Betriebssystem erst noch Ressourcen freimachen müssen.

Auf Host X läuft ein gewöhnlicher FTP-Transfer zu Y. Host Z meldet sich bei X mit einer Verbindung höchster Dringlichkeit. Sein SYN erreicht den FTP-Port. Ein Rang auf dem Formular sagt, wer vorgezogen werden soll; er sagt noch nicht, was aus der begonnenen Datei wird. Genau an dieser unschönen Stelle setzt Vint Cerfs RFC 794 vom September 1981 an. Der kurze Text fragt, welches Stück Software eine bestehende Arbeit tatsächlich unterbrechen kann.

Zur Einstimmung führt Cerf durch drei überfüllte Systeme. Im Telefonnetz bleibt eine belegte Leitung reserviert, selbst wenn niemand spricht. Ein dringender Anrufer kann bei Sättigung einen weniger dringenden verdrängen. Ein Nachrichtenvermittler speichert Botschaften und kann bei Eile sogar den Druck einer anderen Botschaft unterbrechen. Ein Paketnetz hat hingegen wenig Speicher im Transportweg; bei Überlast zählt die Reihenfolge der ankommenden Angebote. Priorität verteilt knappe Mittel. Welches Mittel knapp ist, bestimmt die Handlung.

Für einen AUTODIN-II-Terminalzugang schlägt Cerf einen Terminal-Host-Prozess, THP, vor. Er hält auf dem Port des Terminals ein TCP-LISTEN bereit, obwohl schon eine oder mehrere Verbindungen bestehen. Eine neue Anfrage kann deshalb überhaupt erst eintreffen. Der THP sieht ihren Vorrang, vergleicht ihn mit den laufenden Verbindungen und schließt oder bricht die niedrigste bei Bedarf ab. Anschließend schaltet er den Benutzer zur höheren Verbindung und stellt das nächste LISTEN bereit. Der Empfangstresen bleibt besetzt; das Zimmer wird dadurch nicht größer.

TCP muss dem Prozess den Vorrang der neuen Anfrage zeigen. Cerf macht TCP jedoch nicht zum Hausmeister aller Anwendungen. TCP bedient normalerweise Prozesse und kann für eine eingehende Anfrage nicht einfach selbst den passenden Terminalprozess erschaffen. Ist das Terminal ausgeschaltet, wäre ein neuer Bedienprozess ohnehin sinnlos. Der THP kennt den Benutzer, die laufenden Sitzungen und die Sicherheitsbedingungen für mehrere gleichzeitige Verbindungen. Dort liegt die Information für die unangenehme Entscheidung.

Beim FTP wird diese Verteilung greifbar. X kann während des Transfers mit Y eine zusätzliche Annahmestelle offenhalten. Trifft Zs dringende Anfrage ein und ist keine weitere Bedienung möglich, darf FTP den Benutzer mit niedrigerem Vorrang entfernen und die angefangene Arbeit aufräumen. Ein Prozess, der während der Bedienung kein LISTEN offenhält, ist nach Cerfs Verfahren nicht verdrängbar. Eine Vorzugsberechtigung nützt wenig vor einem Schalter, der gar nicht mehr öffnet.

Und Z? Wenn dort sämtliche FTP- oder TCP-Ressourcen belegt sind, kommt die dringende Anfrage nicht einmal auf den Weg. Das lokale Betriebssystem müsste möglicherweise Kapazität beschaffen, etwa durch das Abmelden weniger wichtiger Benutzer. Cerf lässt offen, ob der Vorrang einem Benutzer oder einem Terminal zugeordnet wird und ob TCP-Implementierung oder Betriebssystem die lokale Auswahl trifft. Der wartende Kunde braucht also an beiden Enden jemanden, der Platz schaffen kann.

Die Pointe dieser zwei Seiten ist trocken: Eine priorisierte Verbindung kann Arbeit verdrängen, und Arbeit verschwindet nicht höflich von selbst. Der Dienst am Ziel muss die unterbrochene Sitzung kennen; die Quelle muss den neuen Auftrag starten können. Cerf schrieb keine Zauberformel in TCP, sondern eine Zuständigkeitskarte für den Augenblick, in dem es eng wird.