Was ist Automatic Repeat ReQuest?
Automatic Repeat ReQuest (ARQ), auch Automatic Repeat Query genannt, ist ein Fehlerkontrollprotokoll, das automatisch einen Aufruf initiiert, um ein beliebiges Datenpaket oder einen Frame nach dem Empfang fehlerhafter oder falscher Daten erneut zu übertragen. Wenn die Sendevorrichtung kein Bestätigungssignal empfängt, um zu bestätigen, dass die Daten empfangen wurden, sendet sie die Daten nach einer vordefinierten Zeitüberschreitung gewöhnlich erneut und wiederholt den Prozess eine vorbestimmte Anzahl von Malen, bis die Sendevorrichtung die Bestätigung empfängt.
ARQs werden oft verwendet, um zuverlässige Übertragungen über einen unzuverlässigen Dienst sicherzustellen.
Drei Haupttypen der ARQ sind die Stop-and-Wait-ARQ, die Go-Back-N-ARQ und die Selective-Repeat-ARQ. Stop-and-Wait ARQ ist die einfachste ARQ. Es wird ein Rahmen zu einem Zeitpunkt gesendet, wobei keine weiteren Rahmen gesendet werden, bis der Empfang des vorhergehenden über ein Bestätigungssignal bestätigt wird.
Go-Back-N ARQ ist ein viel komplexeres Protokoll. Es ermöglicht, dass Rahmen gesendet werden, selbst wenn vorherige Rahmen ohne ein Bestätigungssignal empfangen wurden. Dieses Protokoll verfolgt die Reihenfolge. Wenn der letzte Rahmen empfangen wird, fordert er eine erneute Übertragung der Rahmen an, die ohne Bestätigung gesendet wurden. Dies wird wiederholt, bis alle Rahmen mit einem Bestätigungssignal empfangen sind. Dieses Protokoll kann jedoch dazu führen, dass viele Rahmen mehrmals gesendet werden, was durch Verwendung des selektiven ARQ-Wiederholungsprotokolls vermieden werden kann.
Selective Repeat ARQ kann für die Zustellung und Bestätigung von gesendeten Datenpaketen oder die Zustellung von unterteilten Nachrichten in Untereinheiten verwendet werden. In der ersten Methodologie akzeptiert und bestätigt das Protokoll weiterhin Rahmen, die nach einem anfänglichen Fehler gesendet wurden. Dies wird so lange fortgesetzt, bis eine bestimmte Anzahl von Frames empfangen wurde, die so genannte Fenstergröße. Es gibt eine Fenstergröße für Senden und Empfangen und sie müssen gleich sein. Die Sequenznummern aller nicht empfangenen Frames werden verfolgt und zurück an den Sender gesendet.
Der Sender sendet weiterhin Frames mit nicht bestätigten Daten, bis die Fenstergröße erreicht ist (das Fenster wurde geleert). Wenn dies der Fall ist, sendet der Sender die durch die Bestätigungssignale gegebene Rahmennummer erneut und setzt dort fort, wo er unterbrochen ist. Um sicherzustellen, dass alle Frames empfangen werden, muss die Größe des Sende- und Empfangsfensters die Hälfte der maximalen Sequenznummer betragen. Wenn das Empfangsfenster grßer als die Hälfte der maximalen Sequenznummer ist, sind einige oder sogar alle der nach den erforderlichen Zeitüberschreitungen erneut gesendeten Rahmen Duplikate, werden jedoch nicht als solche erkannt. Wenn der Absender für jede empfangene Bestätigung sein Fenster verschiebt (sliding window genannt), müssen die Anzahl der Bestätigungen und die größte Sequenznummer gleich sein und die Hälfte dieser Anzahl muss der Fenstergröße entsprechen, die vom Empfänger verwendet wird.
In der zweiten Methode, die unterteilte Nachrichten verwendet, ist der Prozess anders. Nicht kontinuierliche Kommunikationskanäle werden verwendet, wenn Nachrichten in der Länge variieren, aber die Protokolle behandeln die Nachricht als eine einzelne Einheit. Alternativ kann jede Nachricht in einem Prozess, der Paketsegmentierung genannt wird, in Unterblöcke unterteilt werden, die eine feste Länge haben. Jede Nachricht enthält eine variable Anzahl von Unterblöcken. Jede nicht bestätigte Antwort trägt ein zusätzliches Bit-Flag, das jeden erfolgreich empfangenen Unterblock anzeigt. Jede erneute Übertragung nimmt in der Länge ab, sie enthält nur die nicht-bestätigten Unterblöcke.
ARQs mit Nachrichten variabler Länge haben die Schwierigkeit mit längeren Nachrichten erhöht, da jede wiederholte Nachricht die volle Länge hat. Die selektive Neuübertragung von Nachrichten mit variabler Länge beseitigt jedoch bei Verwendung von Selective Repeat ARQ die Schwierigkeit, längere Nachrichten zu liefern. Weniger Schwierigkeiten ergeben sich durch die Beibehaltung von erfolgreich gelieferten Teilblöcken nach jeder Übertragung und die Abnahme der Anzahl von ausstehenden Teilblöcken nach jeder Übertragung.
ARQ-Protokolle befinden sich in den Data Link- oder Transport-Schichten des OSI-Modells. TCP verwendet eine Variante von Go-Back-N ARQ, um eine zuverlässige Datenübertragung über das Internetprotokoll sicherzustellen. Es garantiert jedoch nicht die Lieferung von Datenpaketen. Wenn TCP Selective Acknowledgement (SACK) verwendet, wird Selective Repeat ARQ verwendet. Wenn lokale Netzwerke (LAN) verrauschte Umgebungen aufweisen, wird Selective Repeat ARQ mit Paketsegmentierung verwendet.