High-Level Data Link Control (HDLC) — біт-орієнтований кодопрозорий мережевий протокол управління каналом передачі даних канального рівня мережевої моделі OSI, розроблений ISO.

Поточним стандартом для HDLC є ISO 13239.

HDLC може бути використаний у з'єднаннях точка-багатоточка, але в наш час[коли?] в основному використовується у з'єднаннях точка-точка з використанням асинхронного збалансованого режиму (ABM).

Історія

[ред. | ред. код]

HDLC був розроблений на основі протоколу SDLC фірми IBM. Його несильно змінені дочірні протоколи — LAPB, LAPM[en], LAPF[en], LAPD (Link Access Procedures, D channel) були вбудовані ITU відповідно в стеки протоколів X.25, V.42[en], 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).

Під час простою середовища передачі при синхронному з'єднанні FD постійно передається по каналу для підтримки бітової синхронізації. Може мати місце поєднання останнього біта 0 одного прапора та початкової біта 0 наступного. Час простою також називається міжкадрових тимчасовим заповненням.

Структура кадрів

[ред. | ред. код]

Структура кадру HDLC, включаючи прапори FD:

Прапор Адреса Управляюче поле Інформаційне поле FCS Прапор
8 біт 8 біт 8 або 16 біт 0 або більше біт, кратно 8 16 біт 8 біт

Типи кадрів

[ред. | ред. код]

I-кадри (інформаційні кадри, кадри даних)

[ред. | ред. код]

Призначені для передачі даних користувача. У процесі передачі інформаційних блоків здійснюється їх нумерація відповідно до алгоритму ковзного вікна. Після встановлення з'єднання дані і позитивні квитанції починають передаватися в інформаційних кадрах. Логічний канал HDLC є дуплексним, так що інформаційні кадри, а значить, і позитивні квитанції можуть передаватися в обох напрямках. Якщо ж потоку інформаційних кадрів у зворотному напрямку немає або ж потрібно передати негативну квитанцію, то використовуються кадри, що управляють. При роботі HDLC для забезпечення надійності передачі використовується ковзне вікно розміром в 7 кадрів (при розмірі керувального поля 1 байт) або 127 (при розмірі керувального поля 2 байти). Для підтримки алгоритму вікна в інформаційних кадрах станції-відправника відводиться 2 поля:

Припустимо для визначеності, що станція А відправила станції В інформаційний кадр з деякими значеннями NA (S) і NA (R). Якщо у відповідь на цей кадр приходить кадр від станції В, в якому номер посланого цією станцією кадру NB (S) збігається з номером очікуваного станцією А кадру NA (R), то передача вважається коректною. Якщо станція А приймає кадр-відповідь, в якому номер відправленого кадру NB (S) не дорівнює номером очікуваного NA (R), то станція А цей кадр відкидає і посилає негативну квитанцію REJ (відмова) з номером NA (R). Прийнявши негативну квитанцію, станція У зобов'язана повторити передачу кадру з номером 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

S-кадри (керувальні)

[ред. | ред. код]

Використовуються для контролю потоку помилок передачі. У керувальних кадрах передаються команди і відповіді в контексті встановленого логічного з'єднання, в тому числі запити на повторну передачу перекручених інформаційних блоків:

Готовий до Прийому(RR )

Не готовий до Прийому (RNR )

Неприйняття (REJ )

Вибіркове неприйняття (SREJ )

Ім'я Команда /

Відповідь

Опис Інформація Формат упр. поля

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-кадри (ненумеровані)

[ред. | ред. код]

Призначені для встановлення і розриву логічного з’єднання, а також інформування про помилки.

Поле М ненумерованих кадрів містить коди, що визначають тип команд, якими користуються два вузли на етапі встановлення з'єднання (наприклад, SABME, UA, REST).

Ім'я Команда /

Відповідь

Опис Інформація Формат упр. поля

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 Повідомлення про невірний кадр

Див. також

[ред. | ред. код]

Література

[ред. | ред. код]

Посилання

[ред. | ред. код]
Рівень OSI Протоколи
прикладний HTTP, gopher, Telnet, DNS, SMTP, SNMP, CMIP, FTP, TFTP, SSH, IRC, AIM, NFS, NNTP, NTP, SNTP, XMPP, FTAM, APPC, X.400, X.500, AFP, LDAP, SIP, IETF, RTP, RTCP, ITMS, Modbus TCP, BACnet IP, IMAP, POP3, SMB, MFTP, BitTorrent, e2k, PROFIBUS

Це всього лише кілька найрозповсюдженіших протоколів прикладного рівня, яких існує безліч. Всі їх неможливо описати в рамках даної статті.

відображення ASN.1, XML, TDI, XDR, NCP, AFP, ASCII, Unicode
сеансовий ASP, ADSP, DLC, Named Pipes, NBT, NetBIOS, NWLink, Printer Access Protocol, Zone Information Protocol, SSL, TLS, SOCKS, PPTP
транспортний TCP, UDP, NetBEUI, AEP, ATP, IL, NBP, RTMP, SMB, SPX, SCTP, DCCP, RTP, STP, TFTP
мережний IPv4, IPv6, ICMP, IGMP, IPX, NWLink, NetBEUI, DDP, IPSec, ARP, SKIP
канальний (Ланки даних) ARCnet, ATM, DTM, SLIP, SMDS, Ethernet, FDDI, Frame Relay, LocalTalk, Token Ring, PPP, PPPoE, StarLan, WiFi, PPTP, L2F, L2TP, PROFIBUS
фізичний RS-232, RS-422, RS-423, RS-449, RS-485, ITU-T, RJ-11, T-система (T1, E1), модифікації стандарту Ethernet: 10BASE-T, 10BASE2, 10BASE5, 100BASE-TX, 100BASE-FX, 100BASE-T, 1000BASE-T, 1000BASE-TX, 1000BASE-SX