Zurück zum Index
Autoren-Aufruf! Ich habe seit Jahren keine Zeit und Lust mehr, die Inhalte von Mandalex zu pflegen, weswegen sie teilweise veraltet und inkorrekt sind. Wenn ein Wikipedia-Autor über diese Seite stolpert und Lust hat, meine Texte irgendwie in Wikipedia zu integrieren, darf er oder sie mir eine Email schreiben, ich würde die einzelnen Seiten dann gerne abgeben, auf dass ich die Seite irgendwann schliessen kann. Und bevor die Frage kommt: Nein, ich zahle nichts.
Wie im GBN wird hier mit Fenstern gearbeitet. Hier hat jedoch der Empfänger ebenfalls ein Fenster, welches jedoch nicht umbedingt gleich gross sein muss. Durch diese Fenster ist eine Pufferung der Daten möglich. Je grösser sie sind, desto schneller kann dir Übertragung stattfinden. Hier hat der Sender die Fenstergrösse 4 und der Empfänger die Fenstergrösse 3:
| Sender | Empfänger
--------|-----------------------------------|-----------------------------------
Pakete: ||X X X X| X X X X X X X | |X X X| X X X X X X X X
Nr.: ||0 1 2 3| 4 5 6 7 8 9 10 | |0 1 2| 3 4 5 6 7 8 9 10
- X sind Pakete, die noch nicht verschickt wurden
- I sind Pakete, die versendet wurden
- O sind Pakete, die korrekt angekommen sind
Dieses neu erworbene Fenster ermöglicht es dem Empfänger, Pakete innerhalb des Fensters solange zu Puffern, bis dass alle Pakete mit niedrigerer Nummer ebenfalls übertragen wurden. Beispielsweise hat der Sender die Pakete 0 bis 3 bereits gesendet. Nun ging jedoch das Paket 0 verloren, die Pakete 1 und 2 konnten empfangen werden. Der Empfänger versendet also ACK-1 und ACK-2. Der Sender markiert diese als empfangen.
| Sender | Empfänger
--------|-----------------------------------|-----------------------------------
Pakete: ||I O O I| X X X X X X X | |X O O| X X X X X X X X
Nr.: ||0 1 2 3| 4 5 6 7 8 9 10 | |0 1 2| 3 4 5 6 7 8 9 10
Das Paket 3 kam vielleicht beim Empfänger an, jedoch ist es nicht innerhalb des Fensters, weshalb es verworfen wurde. Nun wird der Sender nach einer gewissen Zeit das Warten leid sein und das Paket 0 sowie das Paket 3 nochmals versenden. Der Empfänger bekommt nun das Paket 0 zuerst, sendet also ein ACK-0 und verschiebt sein Fenster soweit nach rechts, dass alle Pakete links vom Fenster abgehakt sind. Der Sender erhält das ACK-0 und verschiebt sein Fenster in der gleichen Weise.
| Sender | Empfänger
--------|-----------------------------------|-----------------------------------
Pakete: | O O O |I X X X| X X X X | O O O |X X X| X X X X X
Nr.: | 0 1 2 |3 4 5 6| 7 8 9 10 | 0 1 2 |3 4 5| 6 7 8 9 10
Nun bekommt der Empfänger mittlerweile auch Paket Nummer 3, hakt dieses ab und sendet sein ACK-3. Das ganze Spiel geht nun solange weiter, bis alle Pakete beim Empfänger angekommen sind und alle ACKs beim Sender angekommen sind (das ist wichtig! Sonst würde der Sender noch lange senden, obschon schon alle Pakete dasind).
Diese Lösung ist soweit auch fehlerfrei, sie kann jedoch zu Fehlern führen, wenn die Nummern nicht durchgehend sind, das heisst, wenn vielleicht nur die Nummern 0 bis 15 erlaubt sind. Dann könnte es sein, dass durch verlorengegangene ACKs Pakete mit der gleichen Nummer nochmals gesendet werden, was dann zu einem fälschlichen Duplikat beim Empfänger führt.
Ein Protokoll, das das Selective-Repeat-Verfahren unterstützt, ist das TCP.