HDLC
- 1 year ago
- 0
- 0
High-Level Data Link Control ( HDLC ) — бит-ориентированный протокол канального уровня сетевой модели OSI , разработанный ISO .
Текущим стандартом для HDLC является ISO 13239.
HDLC может быть использован в соединениях с множественным доступом, но в настоящее время в основном используется в соединениях точка-точка с использованием асинхронного сбалансированного режима (ABM).
HDLC был разработан на основе протокола фирмы IBM . Его несильно изменённые дочерние протоколы — LAPB , , , были встроены ITU соответственно в стеки протоколов X.25 , V.42 , Frame Relay , ISDN . Также HDLC был базой при разработке кадровых механизмов в протоколе PPP , широко используемом в Интернете .
Каждая из станций в каждый момент времени находится в одном из 3 логических состояний:
Если вторичная станция находится в режиме нормального разъединения (NDM), то она может принимать кадры только после получения явного разрешения от первичной. Если же в асинхронном режиме разъединения (ADM), то вторичная станция может самовольно инициировать передачу.
Используется для передачи управления на удалённую комбинированную станцию и для обмена параметрами между удалёнными станциями.
Всем станциям разрешено вести передачу и принимать информацию. Станции могут находиться в режимах NRM, ARM, ABM.
HDLC поддерживает три режима логического соединения, различающиеся ролями взаимодействующих устройств:
Для обеспечения совместимости между станциями, которые могут менять свой статус (тип), в протоколе HDLC предусмотрены 3 конфигурации канала:
Кадры HDLC можно передавать, используя синхронные и асинхронные соединения. В самих соединениях нет механизмов определения начала и конца кадра, для этих целей используется уникальная в пределах протокола битовая последовательность (FD — Frame Delimiter) '01111110' (0x7E в шестнадцатеричном представлении ), помещаемая в начало и конец каждого кадра. Уникальность флага гарантируется использованием битстаффинга в синхронных соединениях и байтстаффинга в асинхронных. Битстаффинг — вставка битов, здесь — бита 0 после 5 подряд идущих битов 1. Битстаффинг работает только во время передачи информационного поля (поля данных) кадра. Если передатчик обнаруживает, что передано подряд пять единиц, то он автоматически вставляет дополнительный ноль в последовательность передаваемых битов (даже если после этих пяти единиц и так идёт ноль). Поэтому последовательность 01111110 никогда не появится в поле данных кадра. Аналогичная схема работает в приёмнике и выполняет обратную функцию. Когда после пяти единиц обнаруживается ноль, он автоматически удаляется из поля данных кадра. В байтстаффинге используется escape-последовательность, здесь — '01111101' (0x7D в шестнадцатеричном представлении ), то есть байт FD (0x7E) в середине кадра заменяется последовательностью байтов (0x7D, 0x5E), а байт (0x7D) — последовательностью байтов (0x7D, 0x5D).
Во время простоя среды передачи при синхронном соединении последовательность 0x7E ('01111110') постоянно передаётся по каналу для поддержания битовой синхронизации. Может иметь место совмещение последнего бита 0 одного флага и начального бита 0 следующего. Время простоя также называется межкадровым временны́м заполнением.
Структура кадра HDLC, включая флаги FD:
Флаг FD | Адрес | Управляющее поле | Информационное поле | FCS | Флаг FD |
---|---|---|---|---|---|
8 бит | кратно 8 битам | 8 или 16 бит | 0 или более бит, кратно 8 | 16 бит | 8 бит |
Предназначены для передачи данных пользователя. В процессе передачи информационных блоков осуществляется их нумерация в соответствии с алгоритмом скользящего окна. После установления соединения данные и положительные квитанции начинают передаваться в информационных кадрах. Логический канал HDLC является дуплексным, так что информационные кадры, а значит, и положительные квитанции могут передаваться в обоих направлениях. Если же потока информационных кадров в обратном направлении нет или же нужно передать отрицательную квитанцию, то используются управляющие кадры. При работе HDLC для обеспечения надёжности передачи используется скользящее окно размером в 7 кадров (при размере управляющего поля 1 байт) или 127 (при размере управляющего поля 2 байта). Для поддержания алгоритма окна в информационных кадрах станции-отправителя отводится 2 поля:
Предположим для определённости, что станция A отправила станции B информационный кадр с некоторыми значениями NA(S) и NA(R). Если в ответ на этот кадр приходит кадр от станции B, в котором номер посланного этой станцией кадра NB(S) совпадает с номером ожидаемого станцией A кадра NA(R), то передача считается корректной. Если станция A принимает кадр-ответ, в котором номер отправленного кадра NB(S) не равен номеру ожидаемого NA(R), то станция A этот кадр отбрасывает и посылает отрицательную квитанцию REJ (от англ. reject — отказ) с номером NA(R). Приняв отрицательную квитанцию, станция B обязана повторить передачу кадра с номером NA(R), а также всех кадров с бо́льшими номерами, которые она уже успела отослать, пользуясь механизмом скользящего окна.
I-кадры также содержат бит опрос/ответ P/F ( poll/final ). В режиме NRM ведущий терминал использует бит P для опроса, ведомый — бит F в последнем I-кадре ответа. В режимах ARM и ABM биты P/F используются для форсирования ответа.
Команда/
Ответ |
Описание |
Формат упр. поля
8…7…6…5…4…3…2…1…. |
---|---|---|
C/R | Данные пользователя | .-N(R)-… P/F….-N(S)-..0 |
Используются для контроля потока ошибок передачи. В управляющих кадрах передаются команды и ответы в контексте установленного логического соединения, в том числе запросы на повторную передачу искаженных информационных блоков:
Готов к приёму (RR)
Не готов к приёму (RNR)
Неприём (REJ)
Выборочный неприём (SREJ)
Имя |
Команда/
Ответ |
Описание | Info |
Формат упр. поля
8…7…6…5…4…3…2…1…. |
---|---|---|---|---|
Готов к приёму (RR) | C/R | Положительная квитанция | Готов к приёму I-кадра | .-N(R)-… P/F…0…0…0…1 |
Не готов к приёму (RNR) | C/R | Положительная квитанция | Не готов к приёму | .-N(R)-… P/F…0…1…0…1 |
Неприём (REJ) | C/R | Отрицательная квитанция | Повтор N кадров | .-N(R)-… P/F…1…0…1…0 |
Выборочный неприём (SREJ) | C/R | Отрицательная квитанция | Повтор 1 кадра | .-N(R)-… P/F…1…1…0…1 |
U-кадры определяются по двум младшим битам, установленным в 1. Таким образом, вместе с флагом P/F это оставляет 5 бит для типа кадра. Так как используется менее 32 значений, некоторые типы кадров имеют разный смысл в зависимости от способа отправки: как запрос или как ответ. Так, понятна связь между командой DISC (disconnect) и ответом RD (request disconnect), но причины, по которым команда SARM и ответ DM имеют одно цифровое значение, непонятны [ кому? ] .
U-кадры предназначены для установления и разрыва логического соединения, а также информирования об ошибках.
Поле M ненумерованных кадров содержит коды, определяющие тип команд, которыми пользуются два узла на этапе установления соединения (например, SABME, UA, REST).
Имя |
Команда/
Ответ |
Описание | Info |
Формат упр. поля
8…7…6…5…4…3…2…1…. |
---|---|---|---|---|
Установить режим нормального ответа SNRM | C | Установить режим | ..1…0…0…P…1…1…0…1 | |
Установить расширенный режим нормального ответа SNRME | C | Установить режим | ..1…1…0…P…1…1…1…1 | |
Установить режим асинхронного ответа SARM | C | Установить режим | ..0…0…0..P/F..1…1…0…1 | |
Установить расширенный режим асинхронного ответа SARME | C | Установить режим | ..0…1…0…P..1…1…1…1 | |
Установить асинхронный сбалансированный режим SABM | C | Установить режим | ..0…0…1..P/F..1…1…1…1 | |
Установить расширенный асинхронный сбалансированный режим SABME | C | Установить режим | ..0…1…1…P…1…1…1…1 | |
Установить режим инициализации SIM | C | Инициировать функцию контроля за линией в адресуемой станции | ..0…0…0..P/F..0…1…1…1 | |
Разрыв соединения DISC | C | Разорвать логическое соединение | ..0…1…0..P/F..0…0…1…1 | |
Ненумерованное подтверждение UA | R | Подтверждение приёма одной из команд установки режимов | ..0…1…0….F..0…0…1…1 | |
Режим разъединения DM | R | Индикация режима лог. разъединения | ||
Запрос разъединения RD | R | Ответ на команду DISC | ..0…1…0..P/F..0…0…1…1 | |
Запрос инициализации RIM | R | Необходима инициализация | Запрос команды SIM | |
Ненумерованная информация UI | C/R | Используется для обмена информацией управления | ..0…0…0..P/F..0…0…1…1 | |
Ненумерованный опрос UP | C | Используется для запроса управляющей информации | ..0…0…1..P….0…0…1…1 | |
Перезапуск счётчиков RSET | C | Исп. для восстановления | Обнуляет N(R), N(S) | ..1…0…0..P….1…1…1…1 |
Обмен статусом XID | C/R | Исп. для запроса / передачи статуса | ..1…0…1..P/F..1…1…1…1 | |
Тест TEST | C/R | Обмен идентичными инф. полями для теста | ..1…1…1..P/F..0…0…1…1 | |
Неприём кадра FRMR | C/R | Извещение о неверном кадре |
Кадры UI, XID, TEST содержат полезные данные и могут быть использованы как в качестве команд, так и в качестве ответов.