High-Level Data Link Control (HDLC) — это протокол связи , используемый для передачи данных между устройствами в телекоммуникациях и сетях . Разработанный Международной организацией по стандартизации (ISO), он определен в стандарте ISO/IEC 13239:2002.
HDLC обеспечивает надежную передачу данных, позволяя одному устройству понимать данные, отправленные другим. Он может работать как с постоянным соединением между устройствами, так и без него, что делает его универсальным для различных сетевых конфигураций.
Первоначально HDLC использовался в сетях с несколькими устройствами, где одно устройство выступало в качестве главного, а другие — в качестве подчиненных, в таких режимах, как режим нормального ответа (NRM) и режим асинхронного ответа (ARM). Сейчас эти режимы используются редко. В настоящее время HDLC в основном используется в соединениях точка-точка , например, между маршрутизаторами или сетевыми интерфейсами , с использованием режима, называемого асинхронным сбалансированным режимом (ABM).
HDLC основан на протоколе SDLC IBM , который является протоколом уровня 2 для архитектуры системных сетей IBM (SNA). Он был расширен и стандартизирован МСЭ как LAP (процедура доступа к каналу), в то время как ANSI назвал свою по сути идентичную версию ADCCP .
Спецификация HDLC не определяет полную семантику полей кадра. Это позволяет выводить из нее другие полностью совместимые стандарты, и с тех пор производные появились в бесчисленном количестве стандартов. Она была принята в стек протоколов X.25 как LAPB , в протокол V.42 как LAPM , в стек протоколов Frame Relay как LAPF и в стек протоколов ISDN как LAPD.
Первоначальные стандарты ISO для HDLC следующие:
Действующий стандарт ISO/IEC 13239:2002 заменил все эти спецификации.
HDLC послужил источником вдохновения для протокола IEEE 802.2 LLC и является основой для механизма кадрирования, используемого с PPP на синхронных линиях, который применяется многими серверами для подключения к глобальной сети (WAN) , чаще всего к Интернету .
Аналогичная версия используется в качестве канала управления для многоканальных телефонных линий E-carrier (E1) и SONET . Cisco HDLC использует низкоуровневые методы кадрирования HDLC, но добавляет поле протокола к стандартному заголовку HDLC.
Кадры HDLC могут передаваться по синхронным или асинхронным последовательным каналам связи. Эти каналы не имеют механизма для обозначения начала или конца кадра, поэтому начало и конец каждого кадра должны быть идентифицированы. Это делается с помощью уникальной последовательности бит в качестве разделителя кадра или флага и кодирования данных для обеспечения того, чтобы последовательность флага никогда не была видна внутри кадра. Каждый кадр начинается и заканчивается разделителем кадра. Разделитель кадра в конце кадра также может обозначать начало следующего кадра.
Как в синхронных, так и в асинхронных соединениях последовательность флагов представляет собой двоичное значение «01111110» или шестнадцатеричное значение 0x7E, но детали существенно различаются.
Поскольку последовательность флага состоит из шести последовательных 1-битов, другие данные кодируются так, чтобы гарантировать, что они никогда не содержат более пяти 1-битов подряд. Это делается путем бит-стаффинга : всякий раз, когда в передаваемых данных появляются пять последовательных 1-битов, данные приостанавливаются и передается 0-бит.
Приемное устройство знает, что это делается, и после того, как видит пять 1-битов подряд, из полученных данных удаляется следующий 0-бит. Если вместо этого шестой бит равен 1, это либо флаг (если седьмой бит равен 0), либо ошибка (если седьмой бит равен 1). В последнем случае процедура приема кадра прерывается и перезапускается при следующем появлении флага.
Эта битовая подстановка служит второй цели — обеспечению достаточного количества переходов сигнала. В синхронных соединениях данные кодируются NRZI , так что 0-бит передается как изменение сигнала на линии, а 1-бит передается как отсутствие изменений. Таким образом, каждый 0-бит дает возможность принимающему модему синхронизировать свои часы с помощью фазовой автоподстройки частоты . Если в строке слишком много 1-битов, приемник может сбиться со счета. Битовая подстановка обеспечивает минимум один переход на шесть битовых времен во время передачи данных и один переход на семь битовых времен во время передачи флага.
Когда по симплексному или полнодуплексному синхронному каналу не передаются кадры, по каналу непрерывно передается разделитель кадров. Это создает одну из двух непрерывных форм волны в зависимости от начального состояния:
Спецификация HDLC позволяет использовать 0-бит в конце разделителя кадра совместно с началом следующего разделителя кадра, т.е. "011111101111110". Некоторое оборудование не поддерживает это.
При полудуплексной или многоточечной связи, когда несколько передатчиков совместно используют линию, приемник на линии будет видеть непрерывные холостые единичные биты в межкадровый период, когда ни один передатчик не активен.
HDLC передает байты данных, начиная с наименее значимым битом (не путать с порядком «от младшего к младшему» , который относится к порядку байтов в многобайтовом поле).
При использовании асинхронной последовательной связи, такой как стандартные последовательные порты RS-232 , синхронная битовая подстановка нецелесообразна по нескольким причинам:
Вместо этого асинхронное кадрирование использует «прозрачность контрольного октета», также называемую « заполнением байтов » или «заполнением октетов». Октет границы кадра — 01111110 (0x7E в шестнадцатеричной системе счисления). «Управляющий октет escape » имеет значение 0x7D (последовательность бит «10111110», поскольку RS-232 первым передает наименее значимый бит). Если любой из этих двух октетов появляется в передаваемых данных, отправляется октет escape, за которым следует исходный октет данных с инвертированным битом 5. Например, байт 0x7E будет передан как 0x7D 0x5E («10111110 01111010»). Другие зарезервированные значения октета (такие как XON или XOFF ) могут быть экранированы таким же образом, если это необходимо.
"Последовательность прерывания" 0x7D 0x7E завершает пакет неполной последовательностью байтов, заставляя получателя обнаружить ошибку. Это можно использовать для прерывания передачи пакета без каких-либо шансов, что получатель сочтет частичный пакет допустимым.
Содержимое кадра HDLC показано в следующей таблице:
Обратите внимание, что конечный флаг одного кадра может быть (но не обязательно) начальным (стартовым) флагом следующего кадра.
Данные обычно отправляются кратными 8 битам, но только некоторые варианты требуют этого; другие теоретически допускают выравнивание данных по границам, отличным от 8 бит.
Последовательность проверки кадра (FCS) представляет собой 16-битный CRC-CCITT или 32-битный CRC-32, вычисляемый по полям Адрес, Управление и Информация. Он предоставляет средства, с помощью которых приемник может обнаружить ошибки, которые могли возникнуть во время передачи кадра, такие как потерянные биты, перевернутые биты и посторонние биты. Однако, учитывая, что алгоритмы, используемые для расчета FCS, таковы, что вероятность того, что некоторые типы ошибок передачи останутся необнаруженными, увеличивается с длиной проверяемых на наличие ошибок данных, FCS может неявно ограничивать практический размер кадра.
Если расчет FCS получателем не совпадает с расчетом отправителя, что указывает на то, что кадр содержит ошибки, получатель может либо отправить отправителю пакет с отрицательным подтверждением , либо не отправлять ничего. После получения пакета с отрицательным подтверждением или истечения времени ожидания пакета с положительным подтверждением отправитель может повторно передать неудавшийся кадр.
FCS был реализован, поскольку многие ранние каналы связи имели относительно высокий уровень ошибок по битам , и FCS можно было легко вычислить с помощью простой, быстрой схемы или программного обеспечения. Более эффективные схемы прямой коррекции ошибок теперь широко используются другими протоколами.
Синхронное управление каналом передачи данных ( SDLC ) изначально было разработано для соединения одного компьютера с несколькими периферийными устройствами через многоточечную шину . Первоначальный «режим нормального ответа» — это первично-вторичный режим, в котором компьютер (или первичный терминал ) дает каждому периферийному устройству ( вторичному терминалу ) разрешение говорить по очереди. Поскольку вся связь осуществляется либо к первичному терминалу, либо от него, кадры включают только один адрес — адрес вторичного терминала; первичному терминалу адрес не назначается. Существует различие между командами, отправляемыми первичным на вторичный, и ответами, отправляемыми вторичным на первичный, но это не отражается в кодировке; команды и ответы неразличимы, за исключением разницы в направлении, в котором они передаются.
Режим нормального ответа позволяет без конкуренции использовать канал вторичный-первичный , поскольку первичный разрешает вторичным передавать по одному. Он также позволяет работать по полудуплексным каналам связи, пока первичный знает, что он не может передавать, когда он разрешил это делать вторичному.
Режим асинхронного ответа — это дополнение HDLC [1] для использования в полнодуплексных соединениях. Сохраняя различие первичного/вторичного, он позволяет вторичному передавать в любое время. Таким образом, должен быть какой-то другой механизм, гарантирующий, что несколько вторичных устройств не попытаются передавать одновременно (или только одно вторичное устройство).
Асинхронный сбалансированный режим добавляет концепцию комбинированного терминала , который может действовать как первичный и вторичный. К сожалению, этот режим работы имеет некоторые тонкости реализации. В то время как наиболее распространенные отправляемые кадры не заботятся о том, находятся ли они в кадре команды или ответа, некоторые важные кадры заботятся (особенно большинство ненумерованных кадров и любой кадр с установленным битом P/F), и поле адреса полученного кадра должно быть проверено, чтобы определить, содержит ли он команду (полученный адрес наш) или ответ (полученный адрес принадлежит другому терминалу).
Это означает, что поле адреса не является необязательным, даже в соединениях точка-точка, где оно не требуется для устранения неоднозначности пир, с которым ведется разговор. Некоторые варианты HDLC расширяют поле адреса, включая как исходный, так и целевой адреса или явный бит команды/ответа.
Можно выделить три основных типа кадров HDLC:
Общий формат поля управления:
Существуют также расширенные (двухбайтовые) формы кадров I и S. Опять же, наименее значимый бит (самый правый в этой таблице) отправляется первым.
Poll/Final — это один бит с двумя названиями. Он называется Poll, когда является частью команды (устанавливается первичной станцией для получения ответа от вторичной станции), и Final, когда является частью ответа (устанавливается вторичной станцией для указания ответа или окончания передачи). Во всех остальных случаях бит сброшен.
Бит используется как токен , который передается туда и обратно между станциями. В каждый момент времени должен существовать только один токен. Вторичный узел отправляет Final только после получения Poll от первичного узла. Первичный узел отправляет Poll только после получения Final от вторичного узла или после тайм-аута, указывающего на потерю бита.
При работе в качестве комбинированной станции важно сохранять различие между битами P и F, поскольку одновременно могут работать два цикла контрольных точек. Бит AP, поступающий в команде с удаленной станции, не является ответом на наш бит P; только бит F, поступающий в ответе, является ответом.
Оба кадра I и S содержат номер последовательности приема N(R). N(R) обеспечивает положительное подтверждение приема I-кадров с другой стороны канала. Его значение всегда равно первому кадру, который еще не получен; он подтверждает, что все кадры со значениями N(S) до N(R)−1 (по модулю 8 или по модулю 128) были получены, и указывает N(S) следующего кадра, который он ожидает получить.
N(R) работает одинаково, независимо от того, является ли он частью команды или ответа. Комбинированная станция имеет только одно пространство порядкового номера.
Это значение увеличивается для последующих I-кадров по модулю 8 или по модулю 128. В зависимости от количества бит в порядковом номере в любой момент времени может ожидаться подтверждение до 7 или 127 I-кадров.
Информационные кадры, или I-кадры , транспортируют пользовательские данные из сетевого уровня. Кроме того, они также включают информацию о потоке и управлении ошибками, совмещенную с данными. Подполя в поле управления определяют эти функции.
Наименее значимый бит (передаваемый первым) определяет тип кадра. 0 означает I-кадр. За исключением интерпретации поля P/F, нет никакой разницы между командным I-кадром и ответным I-кадром; когда P/F равен 0, эти две формы полностью эквивалентны.
Кадры супервизора, или «S-кадры», используются для контроля потока и ошибок, когда совмещение невозможно или нецелесообразно, например, когда у станции нет данных для отправки. S-кадры в HDLC не имеют информационных полей, хотя некоторые протоколы, производные от HDLC, используют информационные поля для «многоизбирательного отклонения».
Поле управления S-кадром включает начальную цифру «10», указывающую, что это S-кадр. За ней следует 2-битный тип, бит опроса/финала и 3-битный порядковый номер. (Или 4-битное поле заполнения, за которым следует 7-битный порядковый номер.)
Первые (наименее значимые) 2 бита означают, что это S-кадр. Все S-кадры включают бит P/F и порядковый номер приема, как описано выше. За исключением интерпретации поля P/F, нет никакой разницы между командным S-кадром и ответным S-кадром; когда P/F равен 0, эти две формы полностью эквивалентны.
Ненумерованные кадры, или U-кадры , в основном используются для управления связью, хотя некоторые используются для передачи пользовательских данных. Они обмениваются информацией об управлении сеансом и управлении между подключенными устройствами, а некоторые U-кадры содержат информационное поле, используемое для информации об управлении системой или пользовательских данных. Первые 2 бита (11) означают, что это U-кадр. Пять битов типа (2 перед битом P/F и 3 бита после бита P/F) могут создавать 32 различных типа U-кадра. В некоторых случаях одно и то же кодирование используется для разных вещей, таких как команда и ответ.
Различные режимы описаны в § Конфигурации связей. Вкратце, существует два нерабочих режима (режим инициализации и отключенный режим) и три рабочих режима (нормальный ответ, асинхронный ответ и асинхронный сбалансированный режим) с 3-битными или 7-битными (расширенными) порядковыми номерами.
Эти кадры могут использоваться как часть обычной передачи информации.
Существует несколько U-кадров, которые не являются частью HDLC, но определены в других связанных стандартах.
Конфигурации ссылок можно разделить на следующие категории:
Три конфигурации связи:
Дополнительная конфигурация связи — режим Disconnected . Это режим, в котором находится вторичная станция до того, как она будет инициализирована первичной станцией или когда она явно отключена. В этом режиме вторичная станция отвечает почти на каждый кадр, кроме команды установки режима, ответом «Disconnected mode». Цель этого режима — позволить первичной станции надежно обнаруживать отключение вторичной станции или ее сброс.
Минимальный набор, необходимый для работы:
Модуль HDLC на другом конце передает кадр (UA) при принятии запроса. Если запрос отклонен, он отправляет кадр режима отключения (DM).
Ненумерованные кадры идентифицируются двумя младшими битами, равными 1. С флагом P/F, это оставляет 5 бит в качестве типа кадра. Несмотря на то, что используется менее 32 значений, некоторые типы имеют разные значения в зависимости от направления, в котором они отправляются: как команда или как ответ. Связь между командой DISC (отключение) и ответом RD (запрос на отключение) кажется достаточно ясной, но причина, по которой команда SARM численно равна ответу DM, неясна.
Кадры UI, UIH, XID, TEST содержат полезную нагрузку и могут использоваться как команды, так и ответы. Команда SM и ответ FRMR также содержат полезную нагрузку.
{{cite book}}
: CS1 maint: местоположение ( ссылка )