Netzwerk-Grundlagen, Teil 3

25.08.2005 von PROF. DR. Stephan Euler
Die direkte Verbindung zwischen zwei Computern eignet sich gut, um die grundlegenden Standards und Anforderungen bei der Datenübertragung zu erläutern. Im dritten und letzten Teil unserer Miniserie behandeln wir das Thema der sicheren Übertragung von Rahmen.

Wenn der Sender einen Rahmen abgeschickt hat, dauert es eine Weile, bis ihn der Empfänger erhalten und anschließend die Korrektheit festgestellt beziehungsweise wieder hergestellt hat.

Der Empfänger kann dann den Empfang quittieren, indem er dem Sender eine Bestätigung schickt. Insgesamt ergibt sich folgender Ablauf:

  1. Sender schickt Rahmen

  2. Empfänger wartet, bis der Rahmen vollständig angekommen ist

  3. Empfänger prüft Korrektheit

  4. Empfänger schickt Bestätigung

  5. Sender erhält Bestätigung

Dieser Zusammenhang ist in Bild mit einem Zeitstrahl grafisch dargestellt. R1 bezeichnet den ersten Rahmen und ACK die Bestätigung (Acknowledgement). In dieser Darstellung ist beim Empfänger eine kleine Zeitspanne nach Erhalt des Rahmens zur Prüfung eingetragen. Diese Zeit wird zwar im Prinzip immer benötigt, im Folgenden wird sie aber zur Vereinfachung der Darstellung nicht mehr explizit eingetragen.

Alle Beiträge der Miniserie Netzwerk-Grundlagen

Teil 1

Übertragungsgrundlagen

Teil 2

Fehlererkennung

Teil 3

Sichere Übertragung

Diesen und weitere Artikel zum Thema finden Sie im tecCHANNEL-Compact "Netzwerk-Know-How". Sie können die Ausgabe versandkostenfrei in unserem Online-Shop bestellen.

Stop-and-Wait-Algorithmus

Eine direkte Implementierung des beschriebenen Verfahrens ist der Stop-and-Wait-Algorithmus. Der Sender schickt einen Rahmen und wartet auf die Bestätigung. Erhält er innerhalb einer gewissen Wartezeit keine Bestätigung, so geht er davon aus, dass der Rahmen verloren gegangen ist und schickt ihn erneut. Die Wartezeit bezeichnet man als Timeout. Damit ergibt sich folgendes Bild.

Der Timeout soll dem Empfänger genügend Zeit zur Bestätigung lassen. Andererseits soll er aber so kurz wie möglich sein, um die Wartezeit bei einem verloren gegangenen Rahmen zu minimieren. Ein Problem tritt auf, wenn die Bestätigung zu spät oder gar nicht ankommt. Beim Sender ist mittlerweile der Timeout abgelaufen, und in der Annahme, dass der Rahmen nicht korrekt empfangen wurde, schickt der Sender ihn erneut. Der Empfänger hat andererseits den Rahmen bestätigt und erwartet nun bereits den nächsten. Ohne weitere Maßnahmen würde er den zum zweiten Mal geschickten Rahmen bereits als nächsten interpretieren.

Rahmenkennung

Es ist daher eine Kennung für die einzelnen Rahmen nötig. Beim Stop-and-Wait-Algorithmus verwendet man in der Regel die einfachste Nummerierung mit 0 und 1. Falls ein Rahmen fälschlicherweise erneut geschickt wird, erkennt dies der Sender an seiner Nummer. Er kann daher den Rahmen ignorieren, muss aber natürlich eine Bestätigung schicken.

Den vollständigen Ablauf zeigt das Bild. In diesem Beispiel geht die Bestätigung für den Rahmen 0 verloren. Der Sender schickt ihn daher nochmals. Diesmal wird die Bestätigung ordnungsgemäß zugestellt, und der Sender geht zum nächsten Rahmen, der die Kennung 1 erhält.

Sliding-Window-Algorithmus

Im Stop-and-Wait-Algorithmus gibt es lange Pausen, in denen der Sender auf eine Bestätigung wartet. Daher wird der Kanal nur schlecht ausgenutzt. Eine bessere Auslastung lässt sich aber erreichen, indem der Empfänger bereits während der Wartezeit weitere Rahmen schickt. Zu jedem Zeitpunkt sind dann mehrere Rahmen auf der Leitung unterwegs, und der Sender wartet auf entsprechend viele ausstehende Bestätigungen.

Der Sender nummeriert die Rahmen, so dass sie individuell bestätigt werden können. Die maximale Anzahl von gleichzeitig auf dem Weg befindlichen Frames – das Sendefenster (Send Window Size, SWS) – kann bei bekannter Leitungscharakteristik an die RTT der Leitung angepasst werden. Im Idealfall wird das Fenster dann so gewählt, dass der Timeout für den ersten Rahmen unmittelbar nach Abschicken des letzten Frames im Sendefenster abläuft. Der Sender muss alle Frames im Sendefenster vorrätig halten, um sie bei Bedarf nochmals senden zu können. Kommt die Bestätigung für den ersten Rahmen an, dann kann der Empfänger diesen löschen und das Sendefenster weiterschieben. Anderenfalls sendet er diesen Rahmen erneut.

Im Allgemeinen kommt es vor, dass zwar ein Rahmen verloren geht, aber die nachfolgenden Frames trotzdem ankommen. Eine gute Kanalauslastung erreicht man, wenn jeder angekommene Rahmen bestätigt wird (selektive Bestätigung, Englisch: selective acknowledgements). Allerdings ist dann der Aufwand in der Verwaltung des Sendefensters und des Empfangsfensters kompliziert. Geht beispielsweise ein bestimmter Rahmen mehrfach verloren, muss der Empfänger sehr viele neue Frames speichern, um diesen alten Rahmen an der richtigen Stelle einfügen zu können. Wenn erforderlich, kann der Empfänger den Sender bremsen, indem er Frames, die zu weit vor dem letzten fehlenden Rahmen liegen, nicht bestätigt oder zumindest die Bestätigung verzögert.

Einfacher durch Sammelbestätigung

Die Arbeit des Senders wird wesentlich vereinfacht, wenn der Empfänger die aus der Reihe angekommenen Rahmen nicht bestätigt. Angenommen Rahmen 4 geht verloren oder wird stark verzögert. Der Empfänger erhält stattdessen bereits die folgenden Rahmen 5 und 6. Er bestätigt diese Rahmen aber nicht, sondern wartet auf den Rahmen 4 – entweder das verspätete Original oder die wieder gesendete zweite Version. Sobald Rahmen 4 ankommt, bestätigt der Empfänger den Frame 6. Bei entsprechendem Protokoll erkennt der Sender daraus, dass alle Rahmen bis zur Nummer 6 gut angekommen sind (kumulative Bestätigung). Er kann dann das Sendefenster auf die Position 7 weiterschieben.

Wenn tatsächlich Frames verloren gehen, wird bei diesem Verfahren der Kanal nicht optimal ausgenutzt. Der Sender schickt während des Wartens nach dem wiederholten Rahmen unnötigerweise auch die nachfolgenden Frames zum zweiten Mal. Andererseits ist in dieser Form die Verwaltung der Rahmen in Sende- und Empfangsfenster recht einfach. Die Nummer eines Rahmens (Sequenznummer) ist eine zusätzlich zu übertragende Information. Aus Effizienzgründen sollten möglichst wenige Bits für diese Nummer verbraucht werden. Die Sequenznummer ist daher auf einen relativ kleinen Bereich beschränkt. Sobald das Maximum erreicht ist, springt der Zähler wieder auf 0 zurück. Es muss allerdings gewährleistet sein, dass die Rahmen noch eindeutig identifiziert werden können. (ala)

Diesen und weitere Artikel zum Thema finden Sie im tecCHANNEL-Compact "Netzwerk-Know-How". Sie können die Ausgabe versandkostenfrei in unserem Online-Shop bestellen.

Alle Beiträge der Miniserie Netzwerk-Grundlagen

Teil 1

Übertragungsgrundlagen

Teil 2

Fehlererkennung

Teil 3

Sichere Übertragung