HDLC
HDLC (High-Level Data Link Control, высокоуровневое управление каналом передачи данных) — это протокол канального уровня (уровень 2 модели OSI), предназначенный для синхронной, бит-ориентированной передачи данных между узлами сети. Он обеспечивает надежную доставку кадров, обнаружение и исправление ошибок, а также управление потоком данных. HDLC является основой для многих современных протоколов, включая PPP (Point-to-Point Protocol) и Frame Relay.
История
Протокол HDLC был разработан Международной организацией по стандартизации (ISO) в 1970-х годах на основе более раннего протокола SDLC (Synchronous Data Link Control), созданного компанией IBM. SDLC был частью сетевой архитектуры IBM SNA (Systems Network Architecture) и предназначался для связи мэйнфреймов с удаленными терминалами. ISO, стремясь создать универсальный стандарт, обобщила и расширила функциональность SDLC, выпустив в 1979 году стандарт ISO 3309. Позднее он был дополнен стандартами ISO 4335 (определение элементов процедуры) и ISO 7809 (классы процедур).
В 1980-х годах HDLC получил широкое распространение в телекоммуникационных сетях, в частности, в сетях X.25 и ISDN. Однако с развитием более эффективных протоколов, таких как Ethernet и TCP/IP, прямое использование HDLC в локальных сетях сократилось. Тем не менее, его модификации и подмножества продолжают применяться в глобальных сетях (WAN), спутниковой связи и встроенных системах.
Классификация и типы станций
HDLC определяет три типа станций (узлов) в сети:
- Первичная станция (Primary): отвечает за управление каналом. Она инициирует передачу, отправляет команды и контролирует поток данных. В сети может быть только одна первичная станция.
- Вторичная станция (Secondary): подчиняется первичной. Она может только отвечать на команды первичной станции и не может инициировать передачу самостоятельно.
- Комбинированная станция (Combined): совмещает функции первичной и вторичной. Она может как отправлять, так и принимать команды, а также инициировать передачу. Такие станции используются в симметричных конфигурациях.
Режимы передачи данных
HDLC поддерживает три основных режима передачи данных, которые определяют, как станции взаимодействуют друг с другом:
- Нормальный режим ответа (Normal Response Mode, NRM): используется в асимметричных конфигурациях (одна первичная и несколько вторичных станций). Вторичная станция может передавать данные только после получения разрешения (опроса) от первичной станции. Этот режим часто применялся в сетях с мэйнфреймами.
- Асинхронный режим ответа (Asynchronous Response Mode, ARM): также используется в асимметричных конфигурациях, но вторичная станция может инициировать передачу данных без предварительного опроса, если канал свободен. Этот режим менее распространен, чем NRM.
- Асинхронный сбалансированный режим (Asynchronous Balanced Mode, ABM): используется в симметричных конфигурациях (две комбинированные станции). Каждая станция может инициировать передачу в любое время, что делает этот режим наиболее гибким и широко применяемым в современных двухточечных соединениях (например, в PPP).
Структура кадра HDLC
Кадр HDLC имеет строгую структуру, состоящую из нескольких полей. Данные передаются побитно, и для синхронизации используется специальная последовательность — флаг.
Формат кадра
| Поле | Размер (бит) | Описание |
|---|---|---|
| Флаг (Flag) | 8 | Открывающий и закрывающий флаг. Всегда имеет значение 01111110 (0x7E). Служит для синхронизации начала и конца кадра. |
| Адрес (Address) | 8 или 16 | Содержит адрес вторичной станции (в NRM/ARM) или адрес получателя (в ABM). В некоторых расширениях может быть увеличен до 16 бит. |
| Управление (Control) | 8 или 16 | Определяет тип кадра (информационный, управляющий, ненумерованный) и содержит номера последовательностей, команды и ответы. |
| Данные (Data/Information) | Переменная | Полезная нагрузка кадра. Может отсутствовать в управляющих кадрах. Максимальный размер не ограничен стандартом, но обычно определяется реализацией. |
| FCS (Frame Check Sequence) | 16 или 32 | Контрольная сумма для обнаружения ошибок. Обычно используется CRC-16 или CRC-32. Вычисляется по полям адреса, управления и данных. |
| Флаг (Flag) | 8 | Закрывающий флаг. Идентичен открывающему (01111110). |
Бит-стаффинг
Чтобы последовательность 01111110 (флаг) не встретилась внутри поля данных, используется механизм бит-стаффинга. Передатчик вставляет ноль после каждой последовательности из пяти единиц (11111). Приемник, обнаружив пять единиц, анализирует следующий бит: если это ноль — он удаляется (восстановление данных), если это единица — проверяется следующий бит. Если после шести единиц следует ноль (1111110), это означает конец кадра (флаг). Если после шести единиц следует единица (1111111), это сигнал об отказе (прерывание).
Типы кадров
HDLC определяет три типа кадров, которые различаются по содержимому поля управления:
1. Информационные кадры (I-кадры, Information)
- Назначение: передача данных пользователя.
- Поле управления: содержит номера последовательностей отправки (N(S)) и приема (N(R)). N(S) — номер отправляемого кадра, N(R) — номер ожидаемого кадра (подтверждение приема всех кадров с номерами до N(R)-1). Это обеспечивает надежную доставку с подтверждением.
- Бит P/F: используется для опроса (Poll) со стороны первичной станции или финального ответа (Final) от вторичной станции.
2. Управляющие кадры (S-кадры, Supervisory)
- Назначение: управление потоком данных и контроль ошибок. Не содержат данных пользователя.
- Типы команд:
- RR (Receive Ready): подтверждает прием кадров и готовность принять новые.
- RNR (Receive Not Ready): подтверждает прием, но сообщает о временной неготовности принимать новые кадры (перегрузка).
- REJ (Reject): запрос на повторную передачу кадра с указанным номером (выборочный отказ).
- SREJ (Selective Reject): запрос на повторную передачу только одного конкретного кадра (селективный отказ).
3. Ненумерованные кадры (U-кадры, Unnumbered)
- Назначение: установление и разрыв соединения, передача информации управления, тестирование канала.
- Типы команд:
- SABM (Set Asynchronous Balanced Mode): установка режима ABM.
- DISC (Disconnect): разрыв соединения.
- UA (Unnumbered Acknowledgment): подтверждение приема ненумерованной команды.
- DM (Disconnected Mode): сообщение о том, что станция находится в отключенном режиме.
- FRMR (Frame Reject): сообщение о получении кадра с ошибкой (неправильный формат, неверный номер последовательности и т.д.).
- UI (Unnumbered Information): передача информации без установления соединения и без подтверждения.
Применение
Несмотря на свой возраст, HDLC и его производные находят применение в различных областях:
- Глобальные сети (WAN): HDLC является стандартным протоколом для последовательных интерфейсов (например, RS-232, V.35) на маршрутизаторах Cisco. В этом контексте он используется как инкапсуляция для передачи IP-пакетов по выделенным линиям.
- Протокол PPP (Point-to-Point Protocol): PPP, широко используемый для коммутируемых и DSL-соединений, основан на HDLC и использует его кадровую структуру (с модификациями, такими как замена бит-стаффинга на байт-стаффинг).
- Frame Relay: этот протокол, популярный в 1990-х годах, также является подмножеством HDLC, использующим его формат кадров и механизмы управления потоком.
- ISDN (Integrated Services Digital Network): протокол LAP-D (Link Access Procedure on the D-channel) в ISDN является вариантом HDLC, адаптированным для D-канала.
- X.25: протокол LAP-B (Link Access Procedure, Balanced) в сетях X.25 является реализацией HDLC в режиме ABM.
- Спутниковая связь: HDLC используется для управления каналом в системах спутниковой связи благодаря своей надежности и эффективности.
- Промышленные сети и встроенные системы: протоколы, такие как SDLC и HDLC, применяются в системах управления технологическими процессами (SCADA) и для связи микроконтроллеров.
Преимущества и недостатки
Преимущества
- Надежность: механизмы подтверждения, нумерации кадров и повторной передачи обеспечивают высокую достоверность передачи данных.
- Эффективность: бит-стаффинг позволяет передавать данные произвольной длины без ограничений на содержимое.
- Гибкость: поддержка различных режимов передачи и типов станций позволяет адаптировать протокол к разным топологиям сети.
- Простота реализации: базовая структура кадра и алгоритмы относительно просты для аппаратной и программной реализации.
Недостатки
- Низкая производительность в современных сетях: механизмы подтверждения и повторной передачи могут приводить к задержкам, особенно на каналах с высокой задержкой (например, спутниковых).
- Отсутствие поддержки множественного доступа: HDLC предназначен для двухточечных или многоточечных (с опросом) соединений и не поддерживает CSMA/CD или другие методы доступа к общей среде.
- Устаревшая архитектура: в локальных сетях HDLC был вытеснен более эффективными протоколами, такими как Ethernet, которые обеспечивают более высокую скорость и масштабируемость.
Интересные факты
- Протокол HDLC является основой для многих протоколов, используемых в сетях сотовой связи (например, GSM использует LAPDm, основанный на HDLC).
- В стандарте HDLC отсутствует явное указание длины поля данных; она определяется по обнаружению закрывающего флага. Это требует от приемника постоянного анализа потока битов.
- Команда SABM (Set Asynchronous Balanced Mode) используется для инициализации соединения в протоколе PPP, что делает его прямым наследником HDLC.
Источники
- ISO 3309:1979 — Information processing — Data communication — High-level data link control procedures — Frame structure.
- ISO 4335:1984 — Information processing — Data communication — High-level data link control procedures — Elements of procedures.
- ISO 7809:1984 — Information processing — Data communication — High-level data link control procedures — Classes of procedures.
- Tanenbaum, A. S., & Wetherall, D. J. (2011). Computer Networks (5th ed.). Pearson.
- Stallings, W. (2013). Data and Computer Communications (10th ed.). Pearson.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →