HDLC
High-Level Data Link Control (HDLC) — біт-орієнтований кодопрозорий мережевий протокол управління каналом передачі даних канального рівня мережевої моделі OSI, розроблений ISO.
Поточним стандартом для HDLC є ISO 13239.
HDLC може бути використаний у з'єднаннях точка-багатоточка, але в наш час[коли?] в основному використовується у з'єднаннях точка-точка з використанням асинхронного збалансованого режиму (ABM).
Історія
HDLC був розроблений на основі протоколу SDLC фірми IBM. Його несильно змінені дочірні протоколи — LAPB, LAPM, LAPF, LAPD (Link Access Procedures, D channel) були вбудовані ITU відповідно в стеки протоколів X.25, V.42, Frame Relay, ISDN. Також HDLC був базою при розробці кадрових механізмів у протоколі PPP, широко використовується в Інтернеті.
Типи станцій
- Первинна (ведуча) станція (Primary terminal) відповідальна за управління каналом і відновлення його працездатності. Вона виробляє кадри команд. У з'єднаннях точка-багатоточка підтримує окремі зв'язку з кожною з вторинних станцій.
- Вторинна (ведена) станція (Secondary terminal) працює під контролем ведучої, відповідаючи на її команди. Підтримує тільки 1 сеанс зв'язку.
- Комбінована станція (Combined terminal) поєднує в собі функції як провідної, так і веденої станцій. Виробляє і команди і відповіді. Тільки з'єднання точка-точка.
Логічні стани
Кожна із станцій в кожен момент часу знаходиться в одному з 3 логічних станів:
- Стан логічного завершення (LDS - Logical Disconnect State)
Якщо вторинна станція знаходиться в режимі нормального закінчення (NDM), то вона може приймати кадри тільки після отримання явного дозволу від первинної. Якщо ж в асинхронному режимі роз'єднання (ADM), то вторинна станція може самовільно ініціювати передачу.
- Стан ініціалізації (IS - Initialization State)
Використовується для передачі управління на віддалену комбіновану станцію і для обміну параметрами між віддаленими станціями.
- Стан передачі інформації (ITS - Information Transfer State)
Всім станціям дозволено вести передачу і приймати інформацію. Станції можуть перебувати в режимах NRM, ARM, ABM.
Режими
HDLC підтримує три режими логічного з'єднання, що відрізняються ролями взаємодіючих пристроїв.
- Режим нормального відповіді (NRM - Normal Response Mode) вимагає ініціації передачі у вигляді явного дозволу на передачу від первинної станції. Після використання каналу вторинної станцією (відповіді на команду первинної), для продовження передачі вона зобов'язана чекати іншого дозволу. Для вибору права на передачу первинна станція проводить кругової опитування вторинних. В основному використовується в з'єднаннях точка-багатоточка.
- Режим асинхронного відповіді (ARM - Asynchronous Response Mode) дає можливість вторинної станції самої ініціювати передачу. В основному використовується в сполуках типу кільце і багатоточкових з незмінною ланцюжком опитування, так як в цих з'єднаннях одна вторинна станція може отримати дозвіл від передачі від іншої вторинної і у відповідь почати передачу. Тобто дозвіл на передачу передається за типом маркера (token). За первинною станцією зберігаються обов'язки з ініціалізації лінії, визначення помилок передачі і логічному роз'єднання. Дозволяє зменшити накладні витрати, пов'язані з початком передачі.
- Асинхронний збалансований режим (ABM - Asynchronous Balanced Mode) використовується комбінованими станціями. Передача може бути ініційована з будь-якого боку, може відбуватися в повному дуплексі. У режимі ABM обидва пристрої рівноправні і обмінюються кадрами, які діляться на кадри-команди і кадри-відповіді.
Конфігурації каналу
Для забезпечення сумісності між станціями, які можуть змінювати свій статус (тип), в протоколі HDLC передбачено 3 конфігурації каналу:
- Незбалансована конфігурація (UN - Unbalanced Normal) забезпечує роботу 1 первинної і однієї або декількох вторинних станцій в (симплексному) напівдуплексному і повнодуплексному режимах, з комутованим або некомутованими каналом.
- Симетрична конфігурація (UA - Unbalanced Asynchronous) забезпечує взаємодію двох двоточкових незбалансованих станцій. Використовується 1 канал передачі, в який мультиплексуються і команди і відповіді. У наш час[коли?] не використовується.
- Збалансована конфігурація (BA - Balanced Asynchronous) складається з 2 комбінованих станцій. Передача в (симплексному) напівдуплексному і повнодуплексному режимах, з комутованим або некомутованими каналом. Кожна станція несе однакову відповідальність за управління каналом.
Кадри
Кадри 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 біт |
- Прапори FD — відкривальні і закривальні прапори, що являють собою коди 01111110, обрамляють HDLC-кадр, дозволяючи приймачу визначити початок і кінець кадру. Завдяки цим прапори в межах HDLC-кадрі відсутнє поле довжини кадру. Іноді прапор кінця одного кадру може (але не обов'язково) бути початковим прапором наступного кадру.
- Адреса виконує свою звичайну функцію ідентифікації одного з декількох можливих пристроїв тільки в конфігураціях точка-багатоточка. У двохточечній конфігурації адресу HDLC використовується для позначення напрямку передачі - з мережі до пристрою користувача (10000000) або навпаки (11 млн).
- Поле, що управляє займає 1 або 2 байти. Його структура залежить від типу переданого кадру. Тип кадру визначається першими бітами керувального поля: 0 - інформаційний, 01 - керувальний, 11 - ненумерований тип. У структуру керувального поля кадрів усіх типів входить біт P / F, він по-різному використовується в кадрах-командах і кадрах-відповідях. Наприклад, станція-приймач при отриманні від станції-передавача кадру-команди з встановленим бітом P негайно повинна відповісти керувальним кадром-відповіддю, встановивши біт F.
- Інформаційне поле призначене для передачі по мережі пакетів протоколу вищого рівня - мережевих протоколів IP, IPX, AppleTalk, DECnet, в окремих випадках - прикладних протоколів, коли ті викладають свої повідомлення безпосередньо в кадри канального рівня . Інформаційне поле може бути відсутнім в керувальних кадрах і деяких ненумерованих кадрах.
- Поле FCS (Frame Check Sequence ) — контрольна послідовність, необхідна для виявлення помилок передачі. Її обчислення в основному проводиться методом циклічного кодування з виробляють поліномом X16 + X12 + X5 +1 (CRC-16), відповідно до Рекомендації CCITT V.41. Це дозволяє виявляти всілякі кортежі помилок довжиною до 16 біт викликаються одиночної помилкою, а також 99,9984% всіляких більш довгих кортежів помилок. FCS складається по полях: Адреса, Поле, що управляє, Інформаційне поле. У рідкісних випадках використовуються інші методи циклічного кодування. Після прорахунку FCS на стороні приймача він відповідає позитивною або негативною квитанцією. Повтор кадру передавальною стороною виконується по приходу негативною квитанції або після закінчення тайм-ауту.
I-кадри (інформаційні кадри, кадри даних)
Призначені для передачі даних користувача. У процесі передачі інформаційних блоків здійснюється їх нумерація відповідно до алгоритму ковзного вікна. Після встановлення з'єднання дані і позитивні квитанції починають передаватися в інформаційних кадрах. Логічний канал HDLC є дуплексним, так що інформаційні кадри, а значить, і позитивні квитанції можуть передаватися в обох напрямках. Якщо ж потоку інформаційних кадрів у зворотному напрямку немає або ж потрібно передати негативну квитанцію, то використовуються кадри, що управляють. При роботі HDLC для забезпечення надійності передачі використовується ковзне вікно розміром в 7 кадрів (при розмірі керувального поля 1 байт) або 127 (при розмірі керувального поля 2 байти). Для підтримки алгоритму вікна в інформаційних кадрах станції-відправника відводиться 2 поля:
- N (S) — номер відправляється кадру;
- N (R) — номер кадру, який станція очікує отримати від свого партнера по діалогу.
Припустимо для визначеності, що станція А відправила станції В інформаційний кадр з деякими значеннями 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 )
- Використовується як позитивна квитанція (до N (r) -1).
- Провідна станція може зробити опитування, встановивши біт P.
- Ведена станція на опитування може відповісти кадром з встановленим F бітом, якщо у неї немає даних для передачі.
Не готовий до Прийому (RNR )
- Використовується як позитивна квитанція і запит зупинити передачу I-кадрів до отримання наступного кадру RR.
- Провідна або Комбінована станції можуть встановити біт P для уточнення статусу прийому веденої / комбінованої станції.
- Ведена / комбінована станції можуть відповісти установкою біта P як індикації зайнятості станції.
Неприйняття (REJ )
- Часто використовується як негативна квитанція приймача
- Неприйняття кадрів останнього вікна (повтор передачі з кадру N (r))
Вибіркове неприйняття (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).
- Встановлення режиму (SNRM, SNRME, SARM, SARME, SABM, SABME, UA, DM, RIM, SIM, RD, DISC)
- Ненумерована інформація (UP, UI)
- Відновлення (FRMR, RSET)
- Невірне поле управління
- Перевищена довжина поля даних
- Невірна довжина для даного типу кадрів
- Невірний номер кадру
- Інші (XID, TEST)
Ім'я | Команда /
Відповідь |
Опис | Інформація | Формат упр. поля
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 | Повідомлення про невірний кадр |
Див. також
- Протокол PPP
- Протокол SLIP
- Стек протоколів TCP/IP
- RFC 1662, standard 51, PPP in HDLC-like Framing
- RFC 2687, Proposed Standard, PPP in a Real-time Oriented HDLC-like Framing
- RFC 4349, Proposed Standard, HDLC frames over L2TPv3
Література
- Галкин В. А., Григорьев Ю. А. Телекоммуникации и Сети. — М.: МГТУ им. Н. Э. Баумана, 2003. С. 608. ISBN 5-7038-1961-X
- Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд. — СПб.: Питер, 2006.
- Friend, George E.; John L. Fike, H. Charles Baker, John C. Bellamy (1988). Understanding Data Communications (вид. 2nd). Indianapolis: Howard W. Sams & Company. ISBN 0-672-27270-9.
- Stallings, William (2004). Data and Computer Communications (вид. 7th). Upper Saddle River: Pearson/Prentice Hall. ISBN 978-013100-6812.
- S. Tanenbaum, Andrew (2005). Computer Networks (вид. 4th). 482,F.I.E., Patparganj, Delhi 110 092: Dorling Kindersley(India)Pvt. Ltd.,licenses of Pearson Education in South Asia. ISBN 81-7758-165-1.
Посилання
- Протокол HDLC
- HDLC protocol information page (good description of HDLC fields)
- Data Communication Lectures of Manfred Lindner - Part HDLC
- HDLC packet format and other information
- The HDLC Family of Protocols
Рівень 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-carrier (T1, E1), модифікації стандарту Ethernet: 10BASE-T, 10BASE2, 10BASE5, 100BASE-TX, 100BASE-FX, 100BASE-T, 1000BASE-T, 1000BASE-TX, 1000BASE-SX |