Управление потоком данных в протоколе HDLC
Управление потоком в HDLC осуществляется с помощью передающих и принимающих окон. Окно устанавливается на каждом конце канала связи, чтобы обеспечить резервирование ресурсов обеих станций. Этими ресурсами могут быть ресурсы вычислителя или пространство буфера. В большинстве случаев окно обеспечивает и буферное пространство, и правила нумерации (сообщений). Окно устанавливается во время инициирования сеанса связи. Если станция А и станция В должны обменяться данными, то резервирует окно для В, а В резервирует окно для А. Использование окон необходимо для полнодуплексных протоколов, потому что они подразумевают непрерывный поток кадров в принимающий узел без периодических подтверждений с остановкой и ожиданием. Переменные состояния станции V(S) и V(R). Окно в принимающем и передающем узлах управляются переменными состояния, которые представляют по сути состояние счетчика. Передающий узел поддерживает переменную состояния посылки V(S). Это порядковый номер следующего по очереди кадра, который должен быть передан. Принимающий узел поддерживает переменную состояния приема V(R), которая содержит номер, который, как ожидается, является порядковым номером следующего кадра. Переменная V(S) увеличивается на 1 при передаче каждого кадра и помещается в поле порядкового номера передаваемого кадра. Получив кадр, принимающий узел производит проверку наличия в нем ошибок передачи и сравнивает порядковый номер со своим V(R). Если кадр может быть принят, узел увеличивает V(R) на 1, помещает его в поле порядкового номера приема кадра подтверждения (АСК) и посылает этот кадр в узел-отправитель, завершая квитирование передачи.
Если V(R) не равен порядковому номеру принимаемого кадра или обнаружена ошибка, в узел-отправитель посылается кадр NAK (с порядковым номером приема, содержащим значение V(R)). В большинстве протоколов этот NAK называется Неприем (REJ) или Выборочный неприем (SREJ). Значение V(R) уведомляет передающее устройство ООД о том, что ожидается прием нового кадра. Передатчик восстанавливает старое значение V(S) и повторяет передачу кадра V(S).
Во многих системах нумерация V(S) и V(R) осуществляется по модулю 8 вследствие повторного использования чисел устройствам станциям не разрешено посылать кадр с порядковым номером, который не был подтвержден. Например, протокол должен дождаться подтверждения кадра с номером 6, прежде чем он опять использует V(S)=6. Использование номеров 0-7 позволяет семи кадрам быть в активном состоянии, прежде, чем "закроется" окно.