WikiDer > Go-Back-N ARQ
Вернитесь назад-N ARQ это конкретный пример автоматический повторный запрос (ARQ) протокол, в котором процесс отправки продолжает отправлять ряд кадры указанный размер окна даже не получив подтверждение (ACK) пакет от получателя. Это частный случай общего протокол скользящего окна с размером окна передачи N и размер окна приема 1. Он может передавать N кадры к партнеру перед тем, как потребовать ACK.
Процесс-получатель отслеживает порядковый номер следующего кадра, который он ожидает получить. Он отбрасывает любой кадр, который не имеет точного порядкового номера, который он ожидает (либо дублированный кадр, который он уже подтвердил, либо кадр с нарушением порядка, который он ожидает получить позже) и отправит ACK для последнего правильного порядка Рамка.[1] Как только отправитель отправил все кадры в своем окно, он обнаружит, что все кадры с момента потери первого кадра выдающийся, и вернется к порядковому номеру последнего ACK, полученного от процесса-получателя, заполнит свое окно, начиная с этого кадра, и продолжит процесс снова.
Вернитесь назад-N ARQ - более эффективное использование соединения, чем Остановка и ожидание ARQ, поскольку, в отличие от ожидания подтверждения для каждого пакета, соединение все еще используется при отправке пакетов. Другими словами, в течение времени, которое в противном случае было бы потрачено на ожидание, отправляется больше пакетов. Однако этот метод также приводит к отправке кадров несколько раз - если какой-либо кадр был потерян или поврежден или ACK, подтверждающий их потерю или повреждение, то этот кадр и все последующие кадры в окне отправки (даже если они были получены без ошибок) будет повторно отправлен. Чтобы этого избежать, Селективный повторный ARQ может быть использован.[2]
Псевдокод
В этих примерах предполагается бесконечное количество порядковых номеров и номеров запросов.[1]
N : = размер окнаRn : = номер запросаSn : = порядковый номерSb : = основание последовательностиСм : = макс. последовательностьфункция приемник является Rn : = 0 Делайте следующее навсегда: если полученный пакет = Rn, и пакет не содержит ошибок тогда Примите пакет и отправьте его на более высокий уровень Rn := Rn + 1 еще Отклонить пакет Отправить запрос на Rnфункция отправитель является Sb := 0 См := N + 1 Повторяйте следующие шаги до бесконечности: если вы получите номер запроса, где Rn > Sb тогда См := (См − Sb) + Rn Sb := Rn если пакет не передается тогда Передать пакет, где Sb ≤ Sn ≤ См. Пакеты передаются по порядку.
Выбор размера окна (N)
При выборе значения для N:
- Отправитель не должен передавать слишком быстро. N должен быть ограничен способностью получателя обрабатывать пакеты.
- N должно быть меньше количества порядковых номеров (если они пронумерованы от нуля до N)[требуется разъяснение] для проверки передачи в случае отбрасывания любого пакета (любых данных или пакета ACK).[2]
- Учитывая оценки, представленные в (1) и (2), выберите N быть максимально возможным числом.[3][неудачная проверка]
Рекомендации
- ^ а б Куроз, Джеймс Ф .; Кейт В. Росс. Компьютерные сети: подход сверху вниз. ISBN 0-321-49770-8.
- ^ а б Таненбаум, Эндрю С. Компьютерная сеть (4-е изд.). ISBN 0-13-066102-3.
- ^ Марбах, Питер. «Протоколы ARQ» (PDF). Получено 24 августа, 2013.