ARQ-Protokoll
ARQ-Protokolle (Automatic Repeat-reQuest engl: Automatische Wiederholungsanfrage) werden bei Computernetzen eingesetzt, um eine zuverlässige Datenübertragung durch Sendewiederholungen zu gewährleisten.
Durch die Möglichkeit der Fehlererkennung kann ein Empfänger aufgetretene Übertragungsfehler feststellen. Über einen Rückkanal kann dieser dem Sender der Nachricht das Resultat der Fehlererkennung mitteilen. Gewöhnlicherweise geschieht dies durch Übertragung so genannter ACK/NAK Signale (Akronyme für Acknowledgement bzw. Negative Acknowledgement, d.h. korrekter Empfang bestätigt bzw. Wiederholungsanfrage). Gegebenenfalls wird eine gestörte Nachricht solange erneut übertragen, bis sie den Empfänger ohne Fehler erreicht hat.
Folgende Protokolle, welche sich hauptsächlich im erzielbaren Durchsatz unterscheiden, werden als grundlegend betrachtet:
Stop-and-Wait
Stop-and-Wait (engl. für Halte und Warte) stellt das einfachste Verfahren dar: Nachdem er eine Dateneinheit gesendet hat, muss der Sender auf die Quittung warten, bevor er das nächste Paket senden kann. Falls er keine Quittung innerhalb eines bestimmten Zeitrahmens (Timeout) empfängt, muss er die Dateneinheit noch einmal senden.
Beispiel: TFTP, das Trivial File Transfer Protocol.
Go-Back-N
Go-Back-N (engl. für Gehe zu N zurück) stellt ein Verfahren dar, dass im Gegensatz zu Stop-and-Wait einen deutlich größeren Durchsatz ermöglicht.
Der Sender kann dabei mehrere Dateneinheiten senden ohne auf eine Quittung warten zu müssen. Der Empfänger bestätigt korrekt empfangene Dateneinheiten und kann auch mehrere Dateneinheiten auf einmal quittieren. Bei einem Fehler muss der Sender alle noch nicht quittierten Daten noch einmal senden. Er geht also zurück zur letzten bestätigten Sequenznummer N. Die Zahl der Dateneinheiten, die ohne Bestätigung verschickt werden dürfen, wird von einem Flusskontrollverfahren bestimmt.
Dieses Verfahren entspricht einem Empfangsfenster der Größe 1, mit anderen Worten, die Sicherungsschicht nimmt nur den Rahmen an, den sie als nächsten an die Vermittlungsschicht weitergeben muss. Ist das Sendefenster voll bevor der Timer abläuft, beginnt sich die Pipeline zu leeren. Irgenwann läuft der Timer des Senders ab, also überträgt dieser alle unbestätigten Rahmen in der richtigen Reihenfolge noch einmal, wobei er mit dem verlorenen oder zerstörten anfängt. Dieser Ansatz kann einen Großteil der verfügbaren Bandbreite verschwenden, wenn die Fehlerrate hoch ist.
Beispiel: TCP, das Transmission Control Protocol.
Selective Repeat ARQ
(engl. für Selektive Wiederholung) Die andere allgemeine Fehlerbehandlungsstrategie bei ARQ-Prokollen ist Selektive Wiederholung. Hier wird ein fehlerhafter Rahmen verworfen, aber die danach erhaltenen Rahmen werden in einem Puffer abgelegt. Wenn beim Sender die Zeit abgelaufen ist, wird nur der älteste nicht bestätigte Rahmen erneut übertragen. Wenn dieser Rahmen korrekt ankommt, kann der Empfänger in der Folge alle im Puffer gespeicherten Rahmen an die Vermittlungsschicht übertragen. Die selektive Wiederholung wird oftmal damit kombiniert, dass der Empfänger eine negative Bestätigung (NAK, Negative Acknowledgement) sendet, wenn er einen Fehler wie beispielsweise einen Prüfsummenfehler oder einen Rahmen ausserhalb der Reihenfolge entdeckt. NAks stoßen die erneute Übertragung an, bevor der entsprechende Timer abläuft und verbessern daher die Leistung. Geht das NAK verloren, wartet der Sender auf den Timeout für den Rahmen und sendet ihn (und zwar nur ihn) auf eigene Veranlassung noch einmal. Die selektive Wiederholung entspricht einem Empfangsfenster größer 1.
Werden diese Protokolle mit den Methoden der Kanalcodierung kombiniert, so spricht man von den hybriden ARQ-Protokollen.