HDLC (akronim angielski do H IGH szczebla D ATA L tuszu C kontroli twoj ego ) jest protokół warstwy 2 ( warstwa łącza ) o modelu OSI , pochodzące z SDLC ( Synchronous Data Link Control ). Jego celem jest zdefiniowanie mechanizmu ograniczania ramek różnych typów, dodając sprawdzanie błędów. Jest zdefiniowany przez Międzynarodową Organizację Normalizacyjną zgodnie ze specyfikacją ISO 3309 (norma ta została poprawiona przez: ISO / IEC 13239: 2002). Interfejsy szeregowe w routerach Cisco korzystają z zastrzeżonej wersji HDLC domyślnie.
Zastosowaną jednostką jest rama ( rama ). Każda ramka jest ograniczona dwiema identycznymi flagami.
Flaga startu | Adres | Zamówione | Dane | Sekwencja sprawdzania ramki | flaga końca |
8 bitów (01111110) |
8 bitów | 8 bitów | ... | 16/32 bitów | 8 bitów (01111110) |
Flaga jest ogranicznikiem ramek do synchronizacji. Jego wartość dotyczy HDLC:
01111110 (binaire) 7E (hexadécimal)Ramki HDLC mogą być wysyłane jedna po drugiej: w tym przypadku flaga końca pierwszej ramki może być połączona w pulę i służyć jako flaga początkowa dla następnej ramki.
Adres to adres odbiorcy, do którego ramka została wysłana. Ten adres jest używany, gdy komunikacja jest typu master-slave , a adres jest adresem slave. W komunikacji punkt-punkt nie jest używany.
W tym polu można wyróżnić 3 rodzaje ramek:
Bit P / F oznacza Poll / Final . Mówi się, że jest ustawiony, jeśli ma wartość 1. Zgodnie z konwencją, bit P jest ustawiany, jeśli ramka jest rozkazem F i jeśli ramka jest odpowiedzią. Wydanie polecenia z P = 1 wymaga natychmiastowej odpowiedzi (z F = 1). Po odebraniu ramki z ustawionym bitem P / F bit jest F, jeśli oczekujemy odpowiedzi na już wysłane polecenie, a P, jeśli nie zostało wysłane żadne polecenie.
W ramkach informacyjnych ( danych ) Ns jest numerem bieżącej ramki. Nr to numer oczekiwanej ramki informacyjnej; potwierdza ramki o numerze niższym niż Nr.
Uwaga: bity pola sterującego, opisane powyżej, są zapisywane w kolejności, w jakiej są wysyłane do warstwy fizycznej , tj. Najpierw najmniej znaczący bit, a na końcu najbardziej znaczący bit.
To opcjonalne pole o zmiennej długości zawiera dane do wysłania. Liczba wysyłanych bitów nie musi być wielokrotnością 8: ponieważ to pole nie musi być wyrównane do bajtów , nie ma potrzeby dodawania bitów wypełniających na końcu.
Sekwencja sprawdzania ramek : FCS to kod dodawany po danych w celu wykrycia możliwych błędów transmisji. Zwykle jest kodowany na 16 bitach, ale po negocjacjach między obiema stronami może być na 32 bitach.
Sekwencja ta odpowiada CRC obliczonemu na podstawie adresu + komendy + pól danych .
Przykład implementacji kodowania / dekodowania FCS w języku C jest proponowany w RFC 1662 ( PPP w ramkach podobnych do HDLC ).
Aby flaga służyła jako ogranicznik, istotne jest, aby wartość flagi nie była znajdowana w danych przesyłanych między początkiem a końcem. W tym celu dane zostaną zmodyfikowane w celu wyeliminowania sekwencji bitów 01111110 (7Eh). Istnieją dwie metody: metoda bitowa i metoda bajtowa.
Pierwsza metoda (nazywana wypychaniem bitów ) jest najbardziej powszechna: ma na celu uniknięcie napotkania sześciu kolejnych bitów o wartości 1 . Podczas zapisywania ramki, jeśli dane zawierają 5 kolejnych bitów o wartości 1, po automatycznie dodawane jest 0.
Druga metoda (nazywana dopełnieniem bajtów) używa znaku ucieczki z wartością szesnastkową 7D . Jeśli wartość flagi ( 7E ) znajduje się wśród bajtów do wysłania, to ten bajt jest zastępowany dwoma następującymi bajtami: 7D, a następnie 5E . Nagle chodzi o upewnienie się, że wartość bajtu ucieczki nie znajduje się w danych, jeśli zostanie napotkana, bajt 7D jest następnie zastępowany bajtami 7D i 5D .
Dlatego przed transmisją nie ma możliwości pomylenia danych z flagami początku / końca.
Istnieją 3 rodzaje ramek w HDLC:
Ramki te przenoszą dane dostarczane przez jednostki warstwy sieciowej .
Ramki te przenoszą polecenia lub odpowiedzi związane z kontrolą błędów i kontrolą przepływu.
Ramki te przenoszą polecenia lub odpowiedzi z zarządzania łączem (ustanowienie, przerwa, wybór trybu odpowiedzi itp.).
ZamówieniaW HDLC istnieją 2 tryby pracy:
Protokół HDLC jest warstwą łącza używaną w wielu protokołach: H.323, V.120, TCN lub X.25 .
Uwaga: istnieje specjalny wariant HDLC opracowany przez Cisco , który modyfikuje użycie pola Adres i dodaje 2 bajty protokołu .