stringtranslate.com

Go-Back-N ARQ

Go-Back- N ARQ — это особый случай протокола автоматического запроса на повтор (ARQ), в котором процесс отправки продолжает отправлять количество кадров, указанное размером окна , даже не получая пакет подтверждения (ACK) от получателя. Это особый случай общего протокола скользящего окна с размером окна передачи N и размером окна приема 1. Он может передавать N кадров одноранговому узлу, прежде чем потребовать ACK.

Процесс-получатель отслеживает порядковый номер следующего кадра, который он ожидает получить. Он отбросит любой кадр, который не имеет точного порядкового номера, который он ожидает получить (либо дубликат кадра, который он уже подтвердил, либо кадр, который не в порядке, который он ожидает получить позже), и отправит ACK для последнего правильного кадра в порядке. [1] После того, как отправитель отправит все кадры в своем окне , он обнаружит, что все кадры с момента первого потерянного кадра являются ожидающими , и вернется к порядковому номеру последнего ACK, который он получил от процесса-получателя, и заполнит свое окно, начиная с этого кадра, и продолжит процесс снова.

Go-Back- N ARQ — более эффективное использование соединения, чем Stop-and-wait ARQ , поскольку в отличие от ожидания подтверждения для каждого пакета, соединение все еще используется по мере отправки пакетов. Другими словами, в течение времени, которое в противном случае было бы потрачено на ожидание, отправляется больше пакетов. Однако этот метод также приводит к отправке кадров несколько раз — если какой-либо кадр был потерян или поврежден, или ACK, подтверждающий их, был потерян или поврежден, то этот кадр и все последующие кадры в окне отправки (даже если они были получены без ошибок) будут отправлены повторно. Чтобы избежать этого, можно использовать Selective Repeat ARQ . [2]

Псевдокод

В этих примерах предполагается бесконечное количество номеров последовательностей и запросов. [1]

N  := размер окна Rn  := номер запроса Sn  := номер последовательности Sb  := основание последовательности Sm  := макс. последовательностьФункция- приемник  Rn  := 0 Делайте следующее всегда: если полученный пакет = Rn и пакет не содержит ошибок, то Принять пакет и отправить его на более высокий уровень Рн  := Рн + 1 иначе Отказаться от пакета Отправить запрос на RnФункция- отправитель  Sb  := 0 Sm  := N + 1 Повторяйте следующие шаги бесконечно: если вы получили номер запроса, где Rn > Sb,  то  Sm  := ( SmSb ) + Rn  Sb  := Rn  если нет передаваемых пакетов , то передать пакет, где SbSnSm .  Пакеты передаются по порядку.

Выбор размера окна (Н)

При выборе значения N следует учитывать несколько моментов :

  1. Отправитель не должен передавать слишком быстро. N должно быть ограничено способностью получателя обрабатывать пакеты.
  2. N должно быть меньше количества порядковых номеров (если они пронумерованы от нуля до N ) [ необходимо разъяснение ] для проверки передачи в случаях потери любого пакета (любых данных или пакета ACK). [2]
  3. Учитывая границы, представленные в (1) и (2), выберите N как наибольшее возможное число. [3] [ проверка не удалась ]

Ссылки

  1. ^ ab Куроуз, Джеймс Ф.; Кит В. Росс. Компьютерные сети: подход сверху вниз . ISBN 0-321-49770-8.
  2. ^ ab Tanenbaum, Andrew S. Computer Networks (4-е изд.). ISBN 0-13-066102-3.
  3. ^ Марбах, Питер. "ARQ Protocols" (PDF) . Получено 24 августа 2013 г.

Смотрите также

Внешние ссылки