Opakování s návratem
Opaková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[1]. 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. 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í[2].
Pseudokód
Tento příklad předpokládá nekonečný počet čísel rámců[1].
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. 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.
- 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[2].
- V rámci omezení uvedených v 1) a 2) volíme největší možné N[3].
Reference
V tomto článku byl použit překlad textu z článku Go-Back-N_ARQ na anglické Wikipedii.
- KUROSE, James F.; ROSS, Keith W. Computer Networking: Top-Down Approach. [s.l.]: [s.n.] ISBN 0-321-49770-8.
- TANENBAUM, Andrew S. Computer Networks. 4.. vyd. [s.l.]: [s.n.] Dostupné online. ISBN 0-13-066102-3.
- MARBACH, Peter. ARQ Protocols [online]. [cit. 2013-08-24]. Dostupné online.[nedostupný zdroj]