Jednotlivé potvrzování

Jednotlivé potvrzování (anglicky Stop-and-wait ARQ nebo Alternating-Bit-Protokol) je metoda používaná v telekomunikacích pro posílání informací mezi dvěma propojenými zařízeními. Zaručuje, že nebude docházet ke ztrátám informace kvůli ztraceným a zahozeným paketům, a že pakety budou doručeny ve správném pořadí. Jedná se o nejjednodušší metodu zpětné vazby s automatickým opakováním (ARQ). Při používání jednotlivého potvrzování odesilatel posílá rámce po jednom; je to speciální případ obecného protokolu s posuvným okénkem (anglicky sliding window) s vysílacím i přijímacím okénkem velikosti 1. Po odeslání každého rámce odesilatel čeká na přijetí potvrzení a další rámec neposílá. Příjemce po přijetí nepoškozeného rámce pošle potvrzení (ACK). Jestliže ACK nedojde odesilateli do uplynutí určitého času nazývaného prodleva (anglicky timeout), odesilatel opakuje vysílání stejného rámce.

Výše uvedené chování je nejjednodušší implementací jednotlivého potvrzování. I přesto se musí vypořádat s problémy, které mohou v reálném provozu nastat.

Odesilatel typicky přidává na konec každého rámce kontrolní součet. Příjemce spočítá kontrolní součet z přijatého rámce a výsledek porovná s přijatým kontrolním součtem. Pokud kontrolní součty souhlasí, příjemce přijetí rámce potvrdí odesláním kladného potvrzení (ACK). Pokud je rámec poškozený, příjemce jej zahodí a potvrzení neposílá – chová se stejně, jako kdyby se rámec ztratil.

Odesilatel se musí vyrovnat s tím, že potvrzení nemusí přijít včas. V tom případě musí vysílání rámce opakovat. Pokud se ztratilo pouze potvrzení, příjemce dostane dvě kopie téhož rámce a musí poznat, že se jedná o duplicitní rámec.

Dalším problémem je, když přenosové médium má tak dlouhé latence, že prodleva měřená odesilatelem vyprší dříve, než rámec dojde k příjemci. I v tomto případě odesilatel pošle stejný paket znovu. Příjemce dostane dvě kopie stejného rámce a pošle ACK pro každý z nich. Odesilatel čekající na jediný ACK přijme dvě potvrzení, což může způsobit problémy, jestliže předpokládá, že druhé potvrzení je pro další rámec v posloupnosti.

Aby se zamezilo těmto problémům, obvykle se v hlavičce rámce vyhradí jednobitové pole pořadové číslo. Toto pořadové číslo se v po sobě jdoucích rámcích střídá (z 0 na 1). Když přijímač pošle potvrzení, použije pořadové číslo dalšího paketu, který očekává. Díky tomu příjemce rozpozná zdvojené rámce tak, že zkontroluje, jestli se pořadová čísla rámců střídají. Jestliže dva následující rámce mají stejné pořadové číslo, jsou duplicitní a druhý rámec bude zahozen. Podobně jestliže se dvě následující potvrzení odkazují na stejné pořadové číslo, potvrzují stejný rámec.

Jednotlivé potvrzování je v porovnání s jinými ARQs neefektivní, protože čas mezi pakety, jestliže jsou data i potvrzení přijaty úspěšně, bude dvojnásobkem doby přenosu rámce (pokud zanedbáme čas od přijetí rámce přijímačem po odeslání potvrzení). Výsledná propustnost kanálu je tak pouhým zlomkem teoretické propustnosti. Pro zrychlení je nutné posílat více než jeden paket bez čekání na potvrzení po jednom s větší pořadové číslo a používá jeden ACK pro množina. To je podstatou metod Opakování s návratem a Selektivní opakování.

Související články

Reference

  • Tanenbaum, Andrew S., Computer Networks, 4th ed. ISBN 0-13-066102-3