Opakování s návratem

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Existuje několik faktorů, které ovlivňují volbu velikosti okénka (N):

  1. Odesilatel nesmí vysílat příliš rychle. N musí být omezené schopností přijímače zpracovávat pakety.
  2. 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].
  3. V rámci omezení uvedených v 1) a 2) volíme největší možné N[3].

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Go-Back-N_ARQ na anglické Wikipedii.

  1. a b KUROSE, James F.; ROSS, Keith W. Computer Networking: Top-Down Approach. [s.l.]: [s.n.] ISBN 0-321-49770-8. 
  2. a b TANENBAUM, Andrew S. Computer Networks. 4.. vyd. [s.l.]: [s.n.] ISBN 0-13-066102-3. 
  3. MARBACH, Peter. ARQ Protocols [online]. [cit. 2013-08-24]. Dostupné online. 

Externí odkazy[editovat | editovat zdroj]