Protokół HDLC

Struktura ramki High-Level Data Link Control, polecenia i tryby pracy.

Czym jest HDLC? Listonosz w Sieci

High-Level Data Link Control (HDLC) to klasyczny i bardzo wpływowy protokół działający w Warstwie Łącza Danych (Warstwa 2) modelu OSI. Można go sobie wyobrazić jako wysoce zdyscyplinowaną i niezawodną usługę pocztową dla pojedynczego, bezpośredniego łącza między dwoma urządzeniami sieciowymi (np. połączenia między dwoma routerami przez linię dzierżawioną).

Jego głównym celem jest pobranie surowych pakietów z Warstwy Sieci („list”) i umieszczenie ich w standardowej kopercie zwanej ramką. Ramka ta zawiera nie tylko dane, ale także adresowanie, informacje kontrolne i mechanizmy sprawdzania błędów, aby zapewnić, że dane dotrą bezpiecznie i w odpowiedniej kolejności do następnego urządzenia na swojej drodze. HDLC był fundamentalnym protokołem dla połączeń punkt-punkt i wielopunktowych, a jego koncepcje miały wpływ na niezliczone późniejsze protokoły, w tym PPP, Frame Relay i ISDN.

Podstawowe Pojęcia: Stacje i Tryby Pracy

Zanim zagłębimy się w strukturę ramki, kluczowe jest zrozumienie ról, jakie mogą odgrywać urządzenia (nazywane „stacjami”) oraz trybów, w jakich może działać łącze HDLC.

Typy Stacji

  • Stacja Pierwotna (Master): Ta stacja kontroluje działanie łącza danych. Wydaje polecenia i jest odpowiedzialna za zarządzanie łączem, inicjowanie transferu danych i obsługę odzyskiwania po błędach.
  • Stacja Wtórna (Slave): Ta stacja działa pod kontrolą stacji pierwotnej. Odzywa się tylko wtedy, gdy zostanie zapytana, wysyłając odpowiedzi na polecenia stacji pierwotnej.
  • Stacja Połączona (Peer): Bardziej zaawansowany typ stacji, który łączy cechy stacji pierwotnej i wtórnej. Może wysyłać i odbierać zarówno polecenia, jak i odpowiedzi, działając jako równorzędny partner w komunikacji.

Tryby Pracy

  • Tryb Normalnej Odpowiedzi (NRM - Normal Response Mode): Niezrównoważona konfiguracja używana w łączach wielopunktowych. Składa się z jednej stacji pierwotnej i jednej lub więcej stacji wtórnych. Stacje wtórne nie mogą nadawać, dopóki nie zostaną odpytane (nie otrzymają wyraźnego pozwolenia) przez stację pierwotną.
  • Tryb Asynchronicznej Odpowiedzi (ARM - Asynchronous Response Mode): Inny tryb niezrównoważony. Pozwala stacji wtórnej na inicjowanie transmisji bez oczekiwania na wyraźne odpytanie przez stację pierwotną. Jednakże stacja pierwotna nadal zachowuje ostateczną kontrolę nad zestawieniem łącza i odzyskiwaniem po błędach.
  • Tryb Zrównoważony Asynchroniczny (ABM - Asynchronous Balanced Mode): Jest to najczęściej stosowany tryb, szczególnie w połączeniach punkt-punkt. Wykorzystuje dwie stacje połączone działające jako równorzędni partnerzy. Każda stacja może inicjować transmisję bez zgody drugiej, co zapewnia bardziej wydajny, pełnodupleksowy kanał komunikacji.

Anatomia Ramki HDLC

HDLC enkapsuluje wszystkie dane i komunikaty kontrolne w dobrze zdefiniowaną strukturę zwaną ramką. Każda część ramki ma określony cel.

  • Znacznik (Flaga) (8 bitów): Ramka zaczyna się i kończy specjalną 8-bitową sekwencją: 01111110. Ten unikalny wzorzec działa jako ogranicznik, pozwalając odbiornikowi na dokładne wykrycie początku i końca ramki w ciągłym strumieniu bitów. Pojedynczy znacznik może jednocześnie oznaczać koniec jednej ramki i początek następnej.
  • Adres (8 lub 16 bitów): To pole identyfikuje docelową stację wtórną. W łączach punkt-punkt to pole może mieć standardową wartość, ponieważ cel jest jednoznaczny. W konfiguracjach wielopunktowych (jak NRM) jest kluczowe do określenia, do której z kilku stacji wtórnych ramka jest przeznaczona. Adres składający się z samych jedynek jest zazwyczaj używany jako adres rozgłoszeniowy.
  • Sterowanie (8 bitów): To jest „mózg” ramki. Definiuje jej cel i zawiera numery sekwencyjne do kontroli przepływu i błędów. Istnieją trzy typy ramek, rozróżniane przez pierwsze bity tego pola: Informacyjne (I-frames), Nadzorcze (S-frames) i Nienumerowane (U-frames).
  • Informacja (zmienna długość): To jest ładunek. Zawiera rzeczywiste dane z wyższej warstwy, zazwyczaj pakiet z Warstwy Sieci (np. pakiet IP). To pole jest obecne tylko w ramkach informacyjnych i niektórych ramkach nienumerowanych. Jego długość może się zmieniać do wynegocjowanego maksimum.
  • Sekwencja Kontrolna Ramki (FCS) (16 lub 32 bity): To pole służące do wykrywania błędów. Nadawca oblicza wartość używając algorytmu na polach Adres, Sterowanie i Informacja. Odbiorca wykonuje to samo obliczenie. Jeśli wyniki się nie zgadzają, ramka jest uznawana za uszkodzoną i zostaje odrzucona.

Kluczowy Szczegół: Wpychanie Bitów

Powstaje krytyczny problem: co, jeśli sekwencja znacznika 01111110 pojawi się w sposób naturalny w danych użytkownika? Odbiornik błędnie zinterpretowałby to jako koniec ramki, co prowadziłoby do błędu synchronizacji. HDLC rozwiązuje ten problem za pomocą eleganckiej techniki zwanej wpychaniem bitów (ang. bit stuffing lub zero-bit insertion).

  • Działanie Nadawcy: Sprzęt HDLC nadawcy nieustannie skanuje strumień danych (między znacznikami). Gdy tylko wykryje sekwencję pięciu kolejnych jedynek, automatycznie wstawia, czyli „wpycha”, dodatkowy bit ‘0’ do strumienia przed jego nadaniem.
  • Działanie Odbiorcy: Odbiornik skanuje przychodzący strumień. Jeśli zobaczy pięć kolejnych jedynek, po których następuje ‘0’, wie, że to ‘0’ zostało wepchnięte przez nadawcę i automatycznie je usuwa, idealnie odtwarzając oryginalne dane. Jeśli zobaczy pięć jedynek, po których następuje ‘1’, sprawdza następny bit. Jeśli jest to ‘0’, wie, że znalazł prawdziwy znacznik (01111110).

Ten prosty i sprytny mechanizm zapewnia, że sekwencja znacznika jest unikalna i może pojawić się tylko na prawdziwym początku i końcu ramki, gwarantując przezroczystość danych.

Zrozumienie Pola Sterującego i Typów Ramek

8-bitowe pole Sterujące jest najbardziej złożoną częścią ramki HDLC. Jego struktura określa funkcję ramki.

Ramki Informacyjne (I-frames)

Ramki I to „woły robocze” HDLC. Ich zadaniem jest przenoszenie danych użytkownika z Warstwy Sieci. Pole sterujące zaczyna się od 0.

  • N(S) - Numer Sekwencyjny Nadania: 3-bitowy numer sekwencyjny dla wychodzącej ramki. Pozwala na przesłanie do 8 ramek (232^3) zanim potrzebne będzie potwierdzenie.
  • N(R) - Numer Sekwencyjny Odbioru: 3-bitowy numer sekwencyjny, który potwierdza odebrane ramki. Wskazuje numer następnej ramki, której stacja oczekuje, co niejawnie potwierdza wszystkie ramki do N(R)-1. Jest to kluczowy element mechanizmu przesuwnego okna HDLC.
  • Bit P/F - Poll/Final: Wszechstronny bit o różnym znaczeniu. Stacja pierwotna ustawia go na 1, aby „odpytać” stację wtórną o odpowiedź. Stacja wtórna ustawia go na 1 w swojej ostatniej ramce odpowiedzi, aby zasygnalizować „koniec”.
Ramki Nadzorcze (S-frames)

Ramki S służą do kontroli przepływu i błędów. Nie przenoszą danych użytkownika. Pole sterujące zaczyna się od 10.

  • Typ (2 bity): Definiuje funkcję ramki S:
    • Receive Ready (RR): Potwierdza odebrane ramki do N(R)-1 i wskazuje gotowość na przyjęcie kolejnych.
    • Receive Not Ready (RNR): Potwierdza odebrane ramki, ale nakazuje nadawcy tymczasowe wstrzymanie transmisji (kontrola przepływu).
    • Reject (REJ): Negatywne potwierdzenie żądające retransmisji pojedynczej ramki, począwszy od N(R).
  • N(R) - Numer Sekwencyjny Odbioru: Taka sama funkcja jak w ramkach I, służy do potwierdzania danych.
Ramki Nienumerowane (U-frames)

Ramki U są używane do celów zarządzania łączem, takich jak ustanawianie i zakańczanie połączeń. Nie posiadają numerów sekwencyjnych. Pole sterujące zaczyna się od 11.

Popularne ramki U to:

  • SABME (Set Asynchronous Balanced Mode Extended): Polecenie ustanowienia łącza HDLC w trybie ABM z rozszerzonymi (7-bitowymi) numerami sekwencyjnymi.
  • DISC (Disconnect): Polecenie zakończenia łącza logicznego.
  • UA (Unnumbered Acknowledgment): Odpowiedź używana do potwierdzenia przyjęcia polecenia U, takiego jak SABME lub DISC.
    Protokół HDLC | Teleinf Edu