Go-Back-N ARQ

Специфичен пример на автоматско повторно побарување (ARQ) протокол, каде што процесот на испраќање на рамки, утврдени со големина на прозорец, продолжува  и без примање на потврда (ACK) пакет од приемникот. Овој протокол е специјален случај на протокол со лизгачки прозорци со големина на прозорец за испраќање од **N** и големина на прозорецот за прием од **1.**

Приемникот ќе го следи редниот број на следната рамка што очекува да ja добие, и го праќа тој број со секој ACK, што  се испраќа. Приемникот ќе ја игнорира секоја рамка што нема точен реден број  што се очекува - без разлика дали таа рамка е "петходниот " дупликат од рамката ,што веќе има пратено за неа ACK или дали таа рамка е "следна" рамка на пакетот што се очекува. Откако испраќачот ги испратил сите рамки во овој прозорец, тој ќе детектира дека сите рамки почнувајќи од првата изгубена рамка се исклучителни,и ќе се врати на редниот број на последниот ACK што го добил од примачот, ќе го пополни овој прозорец почнувајќи од таа рамка ,продолжувајќи со процесот одново.

**Врати се назад-N ARQ**-е поефикасно користење на врска од **Застани-и-чекај ARQ**,наместо  времето потрошено за потврда за секој пакет, врската се користи за праќање на нови пакети.

Со други зборови, времето што инаку би се потрошило на чекање,би се искористило за испраќање на повеќе пакети. Сепак, оваа метода, исто така, резултатира со испраќање на рамки повеќепати - доколку рамката се изгуби  или оштети, или ACK потврдата се изгуби или оштети, тогаш таа рамка и сите рамки по неа во прозорецот (дури и ако тие биле примени без грешка), повторно ќе се препратат. За да се избегне ова, може да се користи **Селективно повторување ARQ**.

Формата на контрола на грешки заснована на sliding-window кој е најопшто користена е наречена go-back-N ARQ. Во овој метод, станицата може да испраќа серии од рамки секвенционално нумерирани, модулирајќи некоја максимална вредност. Бројот на непотврдени рамки  добро познат, е детерминиран од страна на големината на прозорецот, користејќи ја техниката Sliding window protocol на контрола на грешки. Додека не се појавуваат грешки, одредиштето ќе ги потврди ( RR = receive ready (примањето е готово), или piggybacked acknowledgement) влезните рамки како и вообичаено. Ако станицата на одредиштето детектира грешка во рамката, испраќа негативна потврда (REJ = reject-одбивање) за таа рамка. Дестинационата станица ќе ја исфрли таа рамка и сите идни влезни рамки сè додека рамката во која се јавила грешка не е коректно примена. На тој начон, изворната станица, кога прима REJ, мора повторно да ја пренесе рамката со грешка плус сите успешни рамки кои биле пренесени во меѓувреме.

## Псевдокод
Овие примери претпоставуваат бесконечен број на низа од броеви и пребарување.

```
N  = window size
Rn = request number
Sn = sequence number
Sb = sequence base
Sm = sequence max

Receiver:

Rn = 0

Do the following forever:

If the packet received = Rn && the packet is error free
	Accept the packet and send it to a higher layer
	Rn = Rn + 1
	Send a Request for Rn
Else
	Refuse packet
	Send a Request for Rn	

Sender:

Sb = 0
Sm = N – 1

Repeat the following steps forever:

1. If you receive a request number where Rn > Sb 
	Sm = Sm + (Rn – Sb)
	Sb = Rn

2.  If no packet is in transmission, 
	Transmit a packet where Sb <= Sn <= Sm.  
	Packets are transmitted in order.
```


thumb|лево|alt=Приказ на Врати се за N протоколот.

## Избор на големина на прозорец(N)
Постојат некои работи коишто треба да се запазат при избор на вредноста N.

1: Праќачот не смее да праќа премногу брзо.  N треба да се ограничи со способноста на примачот да обработува пакети

2: Вредноста на N мора да е помала од вредноста на Sn-sequence number(ако постојат броеви помеѓу 0 и n-1) да се потврди преносот на секој пакет.

3: Со оглед на границите дадени во (1) и (2), одговара N да биде најголемиот можен број.

## Примери
* Пример 1
* Пример 2

## Наводи

## Надворешни врски
* Go-Back-N ARQ демонстрација на Јава апликацијата

Категорија:Омрежување