Zum Hauptinhalt springen

II. Umgebung

Wir nehmen an, dass der Host über ein Time-Sharing-Betriebssystem verfügt, in dem sich Prozesse die CPU teilen.

Wir stellen uns vor, dass jeder Prozess mit einer Benutzernummer gekennzeichnet ist. Es kann mehr als einen Prozess mit derselben Benutzernummer geben; in diesem Fall sollten sie bei der Nutzung des Netzes alle zusammenarbeiten.

Wir stellen uns vor, dass jeder Prozess eine Menge von Ports besitzt, die für den Prozess eindeutig sind. Diese Ports dienen der Eingabe in den Prozess oder der Ausgabe aus dem Prozess, von oder zu Dateien, Geräten oder anderen Prozessen.

Wir stellen uns außerdem vor, dass ein Prozess nicht schlafen gelegt (d. h. blockiert oder zurückgestellt) wird, wenn er ein LISTEN oder CONNECT versucht. Stattdessen wird er benachrichtigt, sobald eine Aktion abgeschlossen ist. Natürlich kann sich ein Prozess selbst zurückstellen, sodass er nur bei einem externen Ereignis wieder aufwacht.

Um am Netzverkehr teilzunehmen, verbindet ein Prozess einen lokalen Socket mit einem seiner Ports. Sockets werden durch Benutzernummer, Host und AEN identifiziert; ein Socket ist für einen Prozess lokal, wenn die Benutzernummern beider übereinstimmen und sie sich auf demselben Host befinden. Daher muss ein Prozess nur eine AEN angeben, wenn er sich auf einen lokalen Socket bezieht.

Jeder Port hat einen Status, der durch Systemaufrufe und durch nebenläufige Ereignisse außerhalb des Prozesses verändert wird (z. B. durch einen Befehl „Verbindung schließen“ von einem fremden Host). Der Prozess kann den Status eines Ports jederzeit einsehen (über den Systemaufruf STATUS).

Wir setzen eine eineindeutige Zuordnung zwischen Ports und Sockets voraus.