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 біт |
Призначені для передачі даних користувача. У процесі передачі інформаційних блоків здійснюється їх нумерація відповідно до алгоритму ковзного вікна. Після встановлення з'єднання дані і позитивні квитанції починають передаватися в інформаційних кадрах. Логічний канал 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 |
Використовуються для контролю потоку помилок передачі. У керувальних кадрах передаються команди і відповіді в контексті встановленого логічного з'єднання, в тому числі запити на повторну передачу перекручених інформаційних блоків:
Готовий до Прийому(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 |
Призначені для встановлення і розриву логічного з’єднання, а також інформування про помилки.
Поле М ненумерованих кадрів містить коди, що визначають тип команд, якими користуються два вузли на етапі встановлення з'єднання (наприклад, 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 |