Das RDT3.0 -Protokoll verarbeitet die Neuordnung von Nachrichten nicht von Natur aus. Sein Kernmechanismus beruht auf der sequentiellen Nachrichtennummerierung und Bestätigung, um eine zuverlässige Zustellung zu gewährleisten, * die Annahme, dass * Nachrichten in Ordnung kommen. Wenn Nachrichten vom Netzwerk neu angeordnet werden, fällt RDT3.0 fehl.
Das folgende Diagramm zeigt diesen Fehler. Wir werden das Diagramm vereinfachen und uns auf die entscheidenden Aspekte der Neuordnung der Nachrichten und die Aufschlüsselung des Protokolls konzentrieren.
`` `
+--------+Netzwerk (Neuaufbau)+--------+
| Absender | ----------------------------> | Empfänger |
+--------+<------------------------+--------+
| |
| Paket 2 (seqnum =1) |
V ^
+--------+-------> [Netzwerk] <-------+--------+
| | | Paket 1 (seqnum =0)
| Paket 1 (seqnum =0) |
+--------+-------> [Netzwerk] <-------+--------+
+-----------------+------------------+
| Absenderaktionen | | Empfängeraktionen |
+-----------------+------------------+
| Sendet Paket 1 | | Empfängt Paket 2 (seqnum =1) - unerwartet! |
| Sendet Paket 2 | | (Paket 2 ist nicht in Ordnung, RDT3.0 behandelt dies nicht) |
| | | Der Empfänger wartet auf die Sequenznummer 0. |
+-----------------+------------------+
^ |
| (Timeout tritt schließlich beim Absender auf, wenn kein ACK empfangen wird) |
| V
| Absender Retransmits Paket 1 | Der Empfänger erhält schließlich Paket 1 (seqnum =0) - aber aufgrund von Duplikationen, wenn ACK übersehen wurde, aber immer noch problematisch.
`` `
Erläuterung:
1. Absender: Sendet Paket 1 (seqnum =0) und Paket 2 (seqnum =1).
2. Netzwerk: Das Netzwerk liefert die Pakete und liefert Paket 2 vor Paket 1 an den Empfänger.
3. Empfänger: Der Empfänger erwartet Paket 1 (seqnum =0), empfängt jedoch Paket 2 (seqnum =1). Das Design von RDT3.0 schreibt vor, dass es Paket 2 verwerfen wird, da es nicht die erwartete Sequenznummer ist. Es wird kein ACK für Paket 2 gesendet, da es nicht in Ordnung ist.
4. Fehler: Der Absender wird auf ein ACK für Paket 1 (oder möglicherweise Paket 2 abhängig von der Timeout -Implementierung) ausgeführt. Es wird überholt, was zu einer möglichen Duplikation am Empfänger führt. Der Empfänger hat möglicherweise Probleme mit der Verarbeitung der doppelten Pakete und der korrekten Sequenzierung von Ereignissen, wenn ein Mechanismus nicht implementiert wurde.
Entscheidender Punkt: RDT3.0 stützt sich auf das zugrunde liegende Netzwerk, um Pakete in der Reihenfolge zu liefern, die sie erhalten haben. Wenn das Netzwerk die Pakete erstellt, wird der einfache Bestätigungsmechanismus des Protokolls abgebaut, was zu einer unzuverlässigen Datenbereitstellung führt. Um die Auslieferung außerhalb der Ordnung zu bewältigen, wäre ein ausgefeilteres Protokoll (wie der Schiebungsfenstermechanismus von TCP oder ein Protokoll, das ausdrücklich für die Umstellung ausgelegt ist) erforderlich.