Открыть сервис

Протокол HDLC

HDLC (High-Level Data Link Control) — это протокол канального уровня модели OSI, предназначенный для синхронной передачи данных между сетевыми устройствами. Он обеспечивает надёжную доставку кадров, управление потоком, обнаружение и коррекцию ошибок, а также прозрачность передаваемых данных. HDLC является стандартом ISO (ISO 3309, ISO 4335) и широко применяется в телекоммуникационных сетях, в том числе в качестве основы для других протоколов, таких как PPP (Point-to-Point Protocol) и LAPB (Link Access Procedure, Balanced).

История

Протокол HDLC был разработан Международной организацией по стандартизации (ISO) в 1970-х годах на основе более раннего протокола SDLC (Synchronous Data Link Control), созданного компанией IBM. SDLC предназначался для использования в сетях IBM SNA (Systems Network Architecture). ISO адаптировала его для создания универсального стандарта, который мог бы применяться в различных сетевых архитектурах. Первая версия стандарта была опубликована в 1979 году. Впоследствии HDLC был принят Международным союзом электросвязи (ITU-T) как рекомендация Q.921 (для ISDN) и X.25 (для LAPB). Протокол остаётся актуальным и в XXI веке, хотя в локальных сетях и Интернете его вытеснили более современные технологии, такие как Ethernet.

Архитектура и режимы работы

HDLC поддерживает три основных режима работы, которые определяют взаимодействие между станциями (узлами) в сети:

  • Нормальный режим ответа (NRM, Normal Response Mode). Используется в конфигурации «ведущий-ведомый». Ведущая станция инициирует передачу, а ведомая может отправлять данные только в ответ на запрос ведущего. Применялся в ранних сетях с централизованным управлением.
  • Асинхронный режим ответа (ARM, Asynchronous Response Mode). Ведомая станция может инициировать передачу без разрешения ведущей, но только в рамках установленного соединения. Режим используется редко.
  • Асинхронный сбалансированный режим (ABM, Asynchronous Balanced Mode). Обе станции равноправны и могут инициировать передачу в любой момент. Этот режим наиболее распространён в современных реализациях HDLC, например, в протоколе LAPB.

Структура кадра HDLC

Кадр HDLC имеет фиксированную структуру, состоящую из нескольких полей. Все кадры начинаются и заканчиваются флагом — уникальной последовательностью битов 01111110 (0x7E). Для обеспечения прозрачности данных (чтобы внутри кадра не встретилась последовательность флага) используется метод бит-стаффинга: после каждых пяти единиц подряд вставляется ноль.

Поля кадра

ПолеРазмер (байт)Описание
Флаг1Открывающий и закрывающий флаги (0x7E).
Адрес1 (или более)Идентификатор станции-получателя или отправителя (в зависимости от режима).
Управление1 или 2Определяет тип кадра и содержит управляющую информацию.
ДанныеПеременныйПолезная нагрузка (до 4096 байт в некоторых реализациях).
FCS2 или 4Frame Check Sequence — контрольная сумма (CRC) для обнаружения ошибок.

Типы кадров

По значению поля управления кадры HDLC делятся на три категории:

  • Информационные кадры (I-кадры). Переносят пользовательские данные и содержат номера последовательности для управления потоком и подтверждения приёма. Поле управления имеет формат: бит 0 = 0 (признак I-кадра), биты 1–3 — номер отправляемого кадра (N(S)), биты 4–6 — номер ожидаемого кадра (N(R)), бит 7 — бит опроса/финального подтверждения (P/F).
  • Наблюдательные кадры (S-кадры). Используются для управления каналом: подтверждения приёма, запроса повторной передачи, приостановки передачи. Поле управления: биты 0–1 = 10 (признак S-кадра), биты 2–3 — код команды (RR, RNR, REJ, SREJ), биты 4–6 — N(R), бит 7 — P/F.
  • Ненумерованные кадры (U-кадры). Выполняют вспомогательные функции: установление и разрыв соединения, тестирование, передача информации без подтверждения. Поле управления: биты 0–1 = 11 (признак U-кадра), биты 2–3 и 5–7 — код команды, бит 4 — P/F.

Управление потоком и коррекция ошибок

HDLC использует механизм скользящего окна для управления потоком данных. Размер окна (количество кадров, которые могут быть отправлены без подтверждения) может быть фиксированным или динамическим. В режиме ABM обычно используется окно размером до 128 кадров (расширенный режим — до 32768). Для обнаружения ошибок применяется циклический избыточный код (CRC), который вычисляется для всех полей кадра, кроме флагов. При обнаружении ошибки получатель отправляет S-кадр REJ (Reject) или SREJ (Selective Reject), запрашивая повторную передачу одного или нескольких кадров. В случае потери кадра или истечения таймера отправитель повторяет передачу автоматически.

Подмножества и производные протоколы

HDLC лёг в основу нескольких важных протоколов:

  • LAPB (Link Access Procedure, Balanced) — подмножество HDLC, используемое в сетях X.25. Работает только в режиме ABM, обеспечивает надёжную передачу данных между оконечным оборудованием (DTE) и аппаратурой передачи данных (DCE).
  • LAPD (Link Access Procedure on the D-channel) — протокол для D-канала в сетях ISDN. Основан на HDLC, но имеет расширенный адрес (до 2 байт) и поддержку множества логических соединений.
  • PPP (Point-to-Point Protocol) — протокол для соединений «точка-точка», использующий кадрирование HDLC с флагом 0x7E. PPP добавляет поле протокола для мультиплексирования различных сетевых протоколов (IP, IPX, AppleTalk) и механизмы аутентификации (PAP, CHAP).
  • SDLC (Synchronous Data Link Control) — оригинальный протокол IBM, который послужил основой для HDLC. Используется в мэйнфреймах и системах IBM.

Применение

HDLC традиционно применяется в следующих областях:

  • Телекоммуникационные сети: в сетях X.25, ISDN, Frame Relay (на основе LAPF, производного от HDLC).
  • Спутниковая связь: для передачи данных по радиоканалам с высокой задержкой.
  • Промышленные сети: в протоколах Profibus (на физическом уровне) и некоторых других полевых шинах.
  • Маршрутизаторы и коммутаторы: в интерфейсах последовательной связи (например, Cisco HDLC — проприетарная реализация, используемая в оборудовании Cisco Systems).

Критика и ограничения

Основные недостатки HDLC связаны с его возрастом и ориентацией на синхронные последовательные линии:

  • Низкая эффективность в современных сетях: бит-стаффинг увеличивает объём передаваемых данных на 1–2 % в среднем, что снижает пропускную способность.
  • Ограниченная поддержка мультиплексирования: в базовой версии HDLC не поддерживает множественные логические каналы (эта возможность добавлена в LAPD и Frame Relay).
  • Сложность реализации в асинхронных средах: HDLC требует синхронизации по битам, что неудобно для асинхронных интерфейсов (например, RS-232).
  • Зависимость от аппаратного обеспечения: для эффективной работы часто требуется специализированный контроллер (HDLC-контроллер), что усложняет интеграцию в программные реализации.

Тем не менее, HDLC остаётся важным эталоном в теории протоколов канального уровня и используется в специализированных областях, где требуется высокая надёжность и простота.

Интересные факты

  • Флаг HDLC (0x7E) также используется в протоколе PPP, что позволяет совместно использовать оборудование.
  • В расширенном режиме HDLC (Extended HDLC) поле управления увеличивается до 2 байт, что позволяет адресовать до 32768 кадров в окне.
  • Протокол HDLC был одним из первых, где применялся принцип «прозрачности данных» — метод, предотвращающий ложное обнаружение флага в полезной нагрузке.

Источники

  • ISO 3309:1984 — Information processing systems — Data communication — High-level data link control procedures — Frame structure.
  • ISO 4335:1987 — Information processing systems — Data communication — High-level data link control procedures — Elements of procedures.
  • ITU-T Recommendation Q.921 — ISDN user-network interface — Data link layer specification.
  • William Stallings, «Data and Computer Communications», 10th edition, Pearson, 2013.
  • Andrew S. Tanenbaum, «Computer Networks», 5th edition, Pearson, 2010.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →