Send and Wait
Основная идея протокола: Каждый пакет должен быть безошибочно принят до начала передачи следующего пакета.
1 пакет передается из А в В в первом кадре. Передающий модуль ожидает. Если кадр правильно принят в точке В, то в точку А посылается подтверждение ack (Acknolegment - подтверждение приема). Если кадр принят с ошибками, то посылается отрицательное подтверждение nack (Negative Acnolegment). ack и nack также защищается CRC.
Если подтверждение ack принято без ошибок, то в новом кадре передается новый пакет.
Во всех остальных случаях в новом кадре повторяется передача старого пакета (при ошибках в передаче кадра, ack, nack).
Если потеряны кадр, ack или nack, то A делает тайм-аут и передает старый пакет.
Для устранения этой проблемы можно добавить в кадр номер пакета.
Для решения этих проблем вместо ack и nack возвращается номер следующего ожидаемого пакета. Запросы можно также добавлять в заголовок кадров, идущих из B в A.
Алгоритм передачи с остановкой и ожиданием, включающий посылку порядкового номера ПН с каждым пакетом и номера запроса НЗ по обратной связи, работает безошибочно.
Большие числа для ПН и НЗ необязательны, достаточно использовать 0 и 1.
Состояние (A,B) (0,0) - передается пакет 0, ожидается пакет 0.
Если пакет 0 принят, то состояние (0,1), затем (1,1), (1,0), (0,0).
Существует фиксированная последовательность совместных состояний (0,0), (0,1), (1,1), (1,0), (0,0).
Основной недостаток этого алгоритма - во время ожидания подтверждения нельзя производить никаких действий.
Существуют алгоритмы более высокой эффективности.
ARPANET ARQ (с временными подканалами)
Используется 8 виртуальных каналов с остановкой и ожиданием.
Занятые виртуальные каналы уплотняются в битовом тракте, т.е. кадры различных виртуальных каналов посылаются один за другим по линии.
Если все 8 каналов заняты, то пришедший пакет ждет за пределами модуля УЛПД.
Порядок посылки кадров - по кругу. Если очередь некоторого ВК наступает до принятия подтверждения для него, то пакет посылается снова.После подтверждения ВК может принять новый пакет.
Информация о подтверждении добавляется в кадры, идущие в обратном направлении, и повторяется так часто, что почти исключает повторные передачи из-за ошибок подтверждения.
Обычно для каждого кадра с ошибкой требуется только одна повторная передача.
Этот алгоритм не поддерживает упорядоченность пакетов и используется для очень плохих линий связи.
Пример: Функционирование уплотненного канала при уплотнении двух ВК