Het RDT3.0 -protocol gaat niet inherent om met het opnieuw ordenen van berichten. Het kernmechanisme is afhankelijk van opeenvolgende berichtnummering en bevestiging om te zorgen voor betrouwbare levering, * veronderstellen * berichten in volgorde. Als berichten worden hersteld door het netwerk, zal RDT3.0 mislukken.
Het onderstaande diagram illustreert deze storing. We zullen het diagram vereenvoudigen, gericht op de cruciale aspecten van het herorderen van berichten en de afbraak van het protocol.
`` `
+--------+netwerk (opnieuw ordenen)+--------+
| Afzender | --------------------------------> | Ontvanger |
+--------+<----------------------------+--------+
| |
| Pakket 2 (seqnum =1) |
V ^
+--------+-------> [Netwerk] <-------+--------+
| | | Pakket 1 (seqnum =0)
| Pakket 1 (seqnum =0) |
+--------+-------> [Netwerk] <-------+--------+
+-----------------+++-----------------++
| Afzenderacties | | Ontvangeracties |
+-----------------+++-----------------++
| Verzendt pakket 1 | | Ontvangt pakket 2 (seqnum =1) - onverwacht! |
| Verzendt pakket 2 | | (Pakket 2 is buiten volgorde, RDT3.0 gaat dit niet aan) |
| | | Ontvanger wacht op volgnummer 0. |
+-----------------+++-----------------++
^ |
| (Time -out treedt uiteindelijk op bij afzender als er geen ACK wordt ontvangen) |
| V
| Afzender Retransmits Packet 1 | Ontvanger ontvangt uiteindelijk pakket 1 (seqnum =0) - maar nog steeds potentieel problematisch vanwege duplicaties als ACK werd gemist.
`` `
Verklaring:
1. afzender: Verzendt pakket 1 (seqnum =0) en pakket 2 (seqnum =1).
2. Netwerk: Het netwerk bestelt de pakketten en levert pakket 2 vóór pakket 1 aan de ontvanger.
3. ontvanger: De ontvanger verwacht pakket 1 (seqnum =0) maar ontvangt pakket 2 (seqnum =1). Het ontwerp van RDT3.0 bepaalt dat het Packet 2 weggooit omdat dit niet het verwachte volgnummer is. Het stuurt geen ACK voor Packet 2 omdat deze buiten gebruik is.
4. Falen: De afzender times uit wachten op een ACK voor pakket 1 (of mogelijk pakket 2, afhankelijk van de time -outimplementatie). Het hertansmits, wat leidt tot potentiële duplicatie bij de ontvanger. De ontvanger kan problemen hebben met het verwerken van de gedupliceerde pakketten en het correct sequenceren van gebeurtenissen als een mechanisme om dit aan te pakken niet is geïmplementeerd.
Cruciaal punt: RDT3.0 vertrouwt op het onderliggende netwerk om pakketten te leveren in de volgorde die ze zijn verzonden. Als het netwerk pakketten opnieuw wordt geordend, breekt het eenvoudige erkenningsmechanisme van het protocol af, wat resulteert in onbetrouwbare gegevenslevering. Om buiten de orde aflevering af te handelen, zou een meer geavanceerd protocol (zoals het glijdende venstermechanisme van TCP of een protocol die expliciet is ontworpen om opnieuw ordenen te behandelen) nodig zijn. |