Opakování s návratem
Author
Albert FloresOpakování s návratem je zvláštním druhem zpětné vazby s automatickým opakováním, u které odesílající proces pokračuje v posílání dalších datových rámců až do počtu daného velikostí okénka, i když nepřijal potvrzení příjmu (ACK) od přijímající strany. Opakování s návratem je speciálním případem obecného protokolu s posuvným okénkem, u kterého je velikost okénka pro vysílání N, a pro příjem 1.
Přijímající proces si pamatuje pořadové číslo dalšího rámce, jehož přijetí očekává, a toto číslo posílá v každém potvrzení. Přijímač zahodí každý rámec, jehož číslo se neshoduje s očekávaným pořadovým číslem (buď se jedná o opakování již potvrzeného rámce, nebo je to rámec mimo pořadí, který by měl být přijat později), a opakuje vysílání potvrzení s číslem prvního očekávaného rámce. +more Jakmile odesilatel odeslal všechny rámce ve svém okénku, a zjistí, že všechny rámce od prvního ztraceného rámce jsou nepotvrzené a vrátí se k pořadovému číslu posledního potvrzení, které přijal z přijímající strany a vyplní své okénko počínaje tímto rámcem a bude opakovat celý proces znovu.
Opakování s návratem používá spojení efektivněji než jednotlivé potvrzování, protože místo čekání na potvrzení pro každý paket je spojení stále využíváno, protože se odesílají další pakety. Jinými slovy během doby, po kterou by bylo nutné čekat na potvrzení, mohou být odesílány další pakety. +more Tato metoda však může vést k odesílání rámců několikrát; pokud byl některý rámec ztracen nebo poškozen nebo bylo ztraceno nebo poškozeno potvrzení, pak tento rámec a všechny následující rámce v okně (i když byly přijaty bez chyby) budou poslány znovu. Tomu je možné zamezit použitím selektivního opakování.
Pseudokód
Tento příklad předpokládá nekonečný počet čísel rámců.
N = velikost okénka Rn = číslo požadavku Sn = pořadové číslo Sb = začátek posloupnosti Sm = maximum posloupnosti
Přijímač: Rn = 0 Opakuj následující kroky donekonečna: Jestliže přijatý paket má číslo Rn a je bezchybný Přijatý paket předej vyšší vrstvě Rn = Rn + 1 Pošli Potvrzení pro Rn Jinak Zahoď paket Pošli Potvrzení pro Rn
Odesilatel: Sb = 0 Sm = N − 1 Opakuj následující kroky donekonečna: 1. Pokud bylo přijato potvrzení s číslem Rn > Sb Sm = Sm + (Rn − Sb) Sb = Rn 2. +more Pokud žádný paket není vysílán, Odesílej po řadě pakety Sb až Sm.
Volba velikosti okénka
Existuje několik faktorů, které ovlivňují volbu velikosti okénka (N):
# Odesilatel nesmí vysílat příliš rychle. N musí být omezené schopností přijímače zpracovávat pakety. +more # N musí být menší než počet pořadových čísel (jestliže jsou číslovány od nuly do N) pro potvrzení přenosu, pokud by byl libovolný paket (datový nebo potvrzovací) zahozen. # V rámci omezení uvedených v 1) a 2) volíme největší možné N.
Reference
Externí odkazy
[url=http://media.pearsoncmg.com/aw/aw_kurose_network_4/applets/go-back-n/index.html]Aplet v Javě demonstrující opakování s návratem[/url]
Kategorie:Logical link control Kategorie:Detekce a oprava chyb