Возврат-N ARQ
Go-Back- N ARQ — это особый экземпляр протокола автоматического запроса повторения (ARQ), в котором процесс отправки продолжает отправлять количество кадров, указанное размером окна, даже без получения пакета подтверждения (ACK) от получателя. Это частный случай общего протокола скользящего окна с размером окна передачи N и размером окна приема 1. Он может передавать N кадров партнеру, прежде чем потребуется подтверждение.
Процесс-получатель отслеживает порядковый номер следующего кадра, который он ожидает получить. Он отбросит любой кадр, который не имеет точного порядкового номера, который он ожидает (либо дублирующийся кадр, который он уже подтвердил, либо кадр с нарушением порядка, который он ожидает получить позже) и отправит ACK для последнего правильного правильного порядка. рамка. [1] Как только отправитель отправил все кадры в своем окне , он обнаружит, что все кадры, начиная с первого потерянного кадра, являются ожидающими , и вернется к порядковому номеру последнего подтверждения, полученного им от процесса получателя, и заполнит его. окно, начиная с этого кадра, и продолжите процесс заново.
Go-Back- N ARQ — это более эффективное использование соединения, чем ARQ с остановкой и ожиданием , поскольку в отличие от ожидания подтверждения для каждого пакета соединение все еще используется при отправке пакетов. Другими словами, за время, которое в противном случае было бы потрачено на ожидание, отправляется больше пакетов. Однако этот метод также приводит к многократной отправке кадров — если какой-либо кадр был потерян или поврежден, или подтверждение его подтверждения было потеряно или повреждено, то этот кадр и все последующие кадры в окне отправки (даже если они были получены без ошибок) будет отправлено повторно. Чтобы избежать этого, выборочный повторный ARQ . можно использовать [2]
Псевдокод
[ редактировать ]В этих примерах предполагается бесконечное количество порядковых номеров и номеров запросов. [1]
N := window size Rn := request number Sn := sequence number Sb := sequence base Sm := sequence max function receiver is Rn := 0 Do the following forever: if the packet received = Rn and the packet is error free then Accept the packet and send it to a higher layer Rn := Rn + 1 else Refuse packet Send a Request for Rn function sender is Sb := 0 Sm := N + 1 Repeat the following steps forever: if you receive a request number where Rn > Sb then Sm := (Sm − Sb) + Rn Sb := Rn if no packet is in transmission then Transmit a packet where Sb ≤ Sn ≤ Sm. Packets are transmitted in order.
Выбор размера окна ( 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 г.
См. также
[ редактировать ]- Надежная передача данных
- Конвейер (программное обеспечение)
- Автоматический запрос на повтор
- Компьютерные сети
- Выборочный повторный ARQ