High-Level Data Link Control
High-Level Data Link Control (HDLC) — это протокол канального уровня модели OSI, предназначенный для организации надёжной передачи данных между узлами сети. Он определяет структуру кадра, процедуры управления потоком, обнаружения и исправления ошибок, а также методы адресации и управления соединением. HDLC является стандартизированным протоколом (ISO 13239, ITU-T Q.921) и лежит в основе многих других протоколов, таких как PPP, LAPB, LAPD, LAPF и Frame Relay.
История
Протокол HDLC был разработан в 1970-х годах Международной организацией по стандартизации (ISO) на основе более раннего протокола SDLC (Synchronous Data Link Control), созданного компанией IBM. SDLC был частью архитектуры SNA (Systems Network Architecture) и предназначался для синхронной передачи данных в сетях с главным и подчинёнными узлами. ISO, стремясь создать универсальный стандарт, расширила функциональность SDLC, добавив поддержку различных топологий и режимов работы, и в 1979 году опубликовала стандарт ISO 3309 (структура кадра) и ISO 4335 (процедуры).
В 1980-х и 1990-х годах HDLC получил широкое распространение в телекоммуникационных системах, особенно в сетях X.25, ISDN и Frame Relay. С развитием Ethernet и IP-сетей HDLC уступил место более гибким протоколам, но остаётся важным элементом для специализированных приложений, таких как спутниковая связь, промышленная автоматизация и системы управления. Модификации HDLC используются в протоколах PPP (Point-to-Point Protocol) и LAPB (Link Access Procedure, Balanced).
Основные характеристики
HDLC ориентирован на бит-ориентированную передачу, то есть данные передаются в виде непрерывного потока битов, а не байтов или символов. Это отличает его от байт-ориентированных протоколов, таких как BSC (Binary Synchronous Communication). Ключевые особенности HDLC:
- Флаговая синхронизация: Каждый кадр начинается и заканчивается уникальной последовательностью битов — флагом
01111110(0x7E). Чтобы избежать появления этой последовательности внутри данных, используется процедура бит-стаффинга (bit stuffing): после каждых пяти единичных битов вставляется нулевой бит. При приёме после пяти единиц подряд следующий нулевой бит удаляется. - Адресация: Поле адреса может иметь длину от 1 до 4 байт (в зависимости от реализации), что позволяет адресовать до 256 узлов в базовом варианте.
- Управление потоком и ошибками: Используются механизмы скользящего окна, подтверждения приёма (ACK) и повторной передачи (ARQ). Размер окна может варьироваться от 1 до 127 кадров.
- Проверка целостности: Каждый кадр содержит поле Frame Check Sequence (FCS), вычисляемое по алгоритму CRC (Cyclic Redundancy Check) длиной 16 или 32 бита.
Структура кадра
Кадр HDLC состоит из следующих полей:
| Поле | Длина (байты) | Описание |
|---|---|---|
| Флаг | 1 | Синхронизация: 01111110 |
| Адрес | 1–4 | Идентификатор получателя (или отправителя) |
| Управление | 1–2 | Тип кадра и управляющая информация |
| Данные | 0–N | Полезная нагрузка (переменная длина) |
| FCS | 2 или 4 | Контрольная сумма (CRC) |
| Флаг | 1 | Завершающий флаг |
Поле управления определяет тип кадра и содержит информацию для управления соединением. В зависимости от типа кадра, поле управления может включать:
- Номер кадра (N(S)): порядковый номер отправляемого кадра.
- Номер ожидаемого кадра (N(R)): номер следующего кадра, который ожидается от противоположной стороны (используется для подтверждения).
- Биты P/F (Poll/Final): бит опроса (P) в командах и бит завершения (F) в ответах.
Типы кадров
HDLC определяет три типа кадров, различающихся по назначению и содержанию поля управления:
Информационные кадры (I-кадры)
Предназначены для передачи пользовательских данных. Содержат номера N(S) и N(R), что позволяет реализовать скользящее окно и подтверждение приёма. I-кадры могут передаваться только в установленном соединении.
Наблюдающие кадры (S-кадры)
Используются для управления потоком и подтверждения приёма без передачи данных. Основные типы S-кадров:
- RR (Receive Ready): подтверждение приёма и готовность к приёму следующих кадров.
- RNR (Receive Not Ready): подтверждение приёма, но временная неготовность к приёму (например, из-за переполнения буфера).
- REJ (Reject): запрос на повторную передачу одного кадра (селективное повторение).
- SREJ (Selective Reject): запрос на повторную передачу нескольких кадров (используется в некоторых модификациях).
Ненумерованные кадры (U-кадры)
Используются для управления соединением (установление, разрыв, сброс) и передачи служебной информации. Примеры:
- SABM (Set Asynchronous Balanced Mode): установление соединения в асинхронном сбалансированном режиме.
- DISC (Disconnect): разрыв соединения.
- UA (Unnumbered Acknowledgment): подтверждение приёма ненумерованной команды.
- DM (Disconnected Mode): сообщение о том, что узел находится в отключённом состоянии.
- FRMR (Frame Reject): сообщение об ошибке в принятом кадре (например, неверный формат).
Режимы работы
HDLC поддерживает несколько режимов работы, определяющих роли узлов и способ управления:
Нормальный режим ответа (NRM — Normal Response Mode)
Используется в топологиях «главный-подчинённый». Главный узел инициирует передачу, отправляя команды. Подчинённый узел может передавать данные только в ответ на команду (с битом P=1). Этот режим характерен для сетей с централизованным управлением.
Асинхронный сбалансированный режим (ABM — Asynchronous Balanced Mode)
Наиболее распространённый режим, используемый в современных сетях (например, в PPP и LAPB). Оба узла равноправны и могут инициировать передачу в любой момент. Каждый узел выполняет функции как отправителя, так и получателя. Режим ABM поддерживает полнодуплексную связь.
Асинхронный режим ответа (ARM — Asynchronous Response Mode)
Редко используемый режим, в котором один узел является главным, но подчинённый может инициировать передачу без опроса. Главный узел сохраняет функции управления.
Применение
HDLC и его модификации используются в различных областях:
- Сети X.25: Протокол LAPB (Link Access Procedure, Balanced) является подмножеством HDLC и используется на канальном уровне в сетях X.25.
- ISDN: Протокол LAPD (Link Access Procedure on the D-channel) — модификация HDLC для D-канала ISDN, используется для сигнализации.
- Frame Relay: Протокол LAPF (Link Access Procedure for Frame-mode Bearer Services) основан на HDLC и применяется в сетях Frame Relay.
- PPP (Point-to-Point Protocol): Использует модифицированную версию HDLC для инкапсуляции пакетов IP при соединениях «точка-точка» (например, в DSL или последовательных интерфейсах).
- Промышленная автоматизация: Протоколы PROFIBUS и некоторые реализации Modbus используют HDLC-подобные кадры для управления и передачи данных.
- Спутниковая связь: HDLC применяется для организации надёжной передачи данных в условиях высоких задержек и помех.
- Системы управления и телеметрии: В авиации, космической технике и военных системах HDLC используется для передачи команд и данных.
Сравнение с другими протоколами
| Характеристика | HDLC | PPP | Ethernet |
|---|---|---|---|
| Тип передачи | Бит-ориентированный | Байт-ориентированный | Кадр-ориентированный |
| Адресация | 1–4 байта | 1 байт (в HDLC-подобном кадре) | MAC-адреса (6 байт) |
| Управление потоком | Скользящее окно | Скользящее окно (опционально) | CSMA/CD или CSMA/CA |
| Проверка ошибок | CRC | CRC | CRC |
| Поддержка многоточечной связи | Да (NRM) | Нет | Да (с помощью коммутаторов) |
| Стандартизация | ISO 13239 | RFC 1661 | IEEE 802.3 |
Интересные факты
- HDLC является одним из первых протоколов, в котором была реализована процедура бит-стаффинга, что позволило передавать произвольные двоичные данные без ограничений.
- Протокол SDLC, предшественник HDLC, использовался в системах IBM для управления терминалами и мэйнфреймами.
- В сетях Frame Relay HDLC-кадры используются без поля управления, что упрощает обработку и повышает скорость передачи.
- HDLC поддерживает до 8 уровней приоритета (через поле адреса), что позволяет реализовать качество обслуживания (QoS) в некоторых реализациях.
Источники
- ISO 13239:2002 — Information technology — Telecommunications and information exchange between systems — High-level data link control (HDLC) procedures.
- ITU-T Recommendation Q.921 — ISDN user-network interface — Data link layer specification.
- William Stallings, «Data and Computer Communications», 10th Edition, Pearson, 2014.
- Andrew S. Tanenbaum, «Computer Networks», 5th Edition, Pearson, 2010.
- RFC 1661 — The Point-to-Point Protocol (PPP).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →