Kontrola łącza danych wysokiego poziomu
Protokół komunikacyjny | |
Skrót | HDLC |
---|---|
Zamiar | Ramki danych |
Deweloperzy | Międzynarodowa Organizacja Normalizacyjna (ISO) |
Wstęp | 1979 |
Oparte na | SDLC |
warstwa OSI | Warstwa łącza danych |
High-Level Data Link Control ( HDLC ) to zorientowany bitowo , przejrzysty dla kodu synchroniczny protokół warstwy łącza danych, opracowany przez Międzynarodową Organizację Normalizacyjną (ISO). Standardem dla HDLC jest ISO/IEC 13239:2002.
HDLC zapewnia zarówno usługi zorientowane na połączenie, jak i usługi bezpołączeniowe .
HDLC może być używany do połączeń punkt-wielopunkt za pośrednictwem oryginalnych trybów master-slave Normal Response Mode (NRM) i Asynchronous Response Mode (ARM), ale obecnie są one rzadko używane; jest obecnie używany prawie wyłącznie do łączenia jednego urządzenia z drugim przy użyciu asynchronicznego trybu zrównoważonego (ABM).
Historia
HDLC jest oparty na protokole IBM SDLC , który jest protokołem warstwy 2 dla IBM Systems Network Architecture (SNA) . Został rozszerzony i znormalizowany przez ITU jako LAP (Procedura dostępu do łącza), podczas gdy ANSI nazwał swoją zasadniczo identyczną wersję ADCCP .
Specyfikacja HDLC nie określa pełnej semantyki pól ramek. Pozwala to na wyprowadzenie z niego innych w pełni zgodnych standardów, a od tego czasu pochodne pojawiły się w niezliczonych standardach. Został przyjęty do X.25 jako LAPB , do protokołu V.42 jako LAPM , do stosu protokołów Frame Relay jako LAPF i do stosu protokołów ISDN jako LAPD.
Oryginalne normy ISO dla HDLC są następujące:
- ISO 3309-1979 – Struktura ramy
- ISO 4335-1979 – Elementy procedury
- ISO 6159-1980 – Niezrównoważone klasy procedur
- ISO 6256-1981 – Zrównoważone klasy procedur
ISO/IEC 13239:2002, obecna norma, zastąpiła wszystkie te specyfikacje.
HDLC był inspiracją dla protokołu IEEE 802.2 LLC i jest podstawą mechanizmu ramkowania używanego z PPP na liniach synchronicznych, używanych przez wiele serwerów do łączenia się z siecią WAN , najczęściej z Internetem .
Podobna wersja jest używana jako kanał kontrolny dla wielokanałowych linii telefonicznych E-carrier (E1) i SONET . Cisco HDLC wykorzystuje niskopoziomowe techniki ramkowania HDLC, ale dodaje pole protokołu do standardowego nagłówka HDLC.
Ramy
Ramki HDLC mogą być przesyłane synchronicznymi lub asynchronicznymi szeregowymi łączami komunikacyjnymi. Łącza te nie mają mechanizmu oznaczania początku lub końca ramki, więc początek i koniec każdej ramki muszą być zidentyfikowane. Odbywa się to za pomocą unikalnej sekwencji bitów jako ogranicznika ramki lub flagi i kodowania danych w celu zapewnienia, że sekwencja flag nigdy nie będzie widoczna w ramce. Każda ramka zaczyna się i kończy ogranicznikiem ramki. Ogranicznik ramki na końcu ramki może również oznaczać początek następnej klatki.
Zarówno w łączach synchronicznych, jak i asynchronicznych sekwencja flag jest binarna „01111110” lub szesnastkowa 0x7E, ale szczegóły są zupełnie inne.
Synchroniczne kadrowanie
Ponieważ sekwencja flag składa się z sześciu kolejnych bitów 1-bitowych, inne dane są kodowane w taki sposób, aby nigdy nie zawierały więcej niż 5 bitów 1-bitowych w rzędzie. Odbywa się to poprzez upychanie bitów : za każdym razem, gdy w przesyłanych danych pojawia się pięć kolejnych bitów 1, dane są wstrzymywane i przesyłany jest bit 0.
Urządzenie odbierające wie, że to się dzieje, i po zobaczeniu pięciu bitów 1 z rzędu, kolejny bit 0 jest usuwany z odebranych danych. Jeśli zamiast tego szósty bit ma wartość 1, jest to albo flaga (jeśli siódmy bit to 0), albo błąd (jeśli siódmy bit to 1). W tym drugim przypadku procedura odbierania ramki jest przerywana i uruchamiana ponownie, gdy pojawi się flaga.
To upychanie bitów służy drugiemu celowi, jakim jest zapewnienie wystarczającej liczby przejść sygnału. W łączach synchronicznych dane są standardzie NRZI , tak że bit 0 jest przesyłany jako zmiana sygnału na linii, a bit 1 jako brak zmiany. Zatem każdy bit 0 daje modemowi odbierającemu możliwość zsynchronizowania swojego zegara poprzez pętlę synchronizacji fazowej . Jeśli jest zbyt wiele 1-bitów z rzędu, odbiornik może stracić rachubę. Wypychanie bitów zapewnia co najmniej jedno przejście na sześć bitów podczas transmisji danych i jedno przejście na siedem bitów podczas transmisji flagi.
Gdy żadne ramki nie są przesyłane w łączu synchronicznym simpleksowym lub pełnodupleksowym, w łączu przesyłany jest w sposób ciągły ogranicznik ramek. Generuje to jeden z dwóch ciągłych przebiegów, w zależności od stanu początkowego:
Specyfikacja HDLC umożliwia współdzielenie bitu 0 na końcu ogranicznika ramki z początkiem następnego ogranicznika ramki, tj. „011111101111110”. Niektóre urządzenia tego nie obsługują.
W przypadku komunikacji półdupleksowej lub wielopunktowej, gdy kilka nadajników współdzieli linię, odbiornik na linii będzie widział ciągłe bezczynne bity 1 w okresie między ramkami, gdy żaden nadajnik nie jest aktywny.
HDLC przesyła bajty danych z najmniej znaczącym bitem jako pierwszym (nie mylić z porządkiem little-endian , który odnosi się do kolejności bajtów w polu wielobajtowym).
Kadrowanie asynchroniczne
Podczas korzystania z asynchronicznej komunikacji szeregowej, takiej jak standardowe porty szeregowe RS-232 , synchroniczne upychanie bitów jest nieodpowiednie z kilku powodów:
- Wypychanie bitów nie jest potrzebne, aby zapewnić odpowiednią liczbę przejść, ponieważ zapewniają to bity startu i stopu,
- Ponieważ dane są zakodowane w NRZ do transmisji, a nie w NRZI, zakodowany kształt fali jest inny,
- RS-232 wysyła bity w grupach po 8, co sprawia, że dodawanie pojedynczych bitów jest bardzo niewygodne
- Z tego samego powodu konieczne jest jedynie specjalne kodowanie bajtów flag ; nie trzeba się martwić o wzorzec bitowy obejmujący wiele bajtów.
Zamiast tego ramkowanie asynchroniczne wykorzystuje „przezroczystość kontrolno-oktetową”, zwaną także „ wypychaniem bajtów ” lub „wypychaniem oktetów”. Oktet granicy ramki to 01111110, (0x7E w szesnastkowej ). „ Octet ucieczki sterowania ” ma wartość 0x7D (sekwencja bitów „10111110”, ponieważ RS-232 przesyła najpierw najmniej znaczący bit). Jeśli którykolwiek z tych dwóch oktetów pojawi się w przesyłanych danych, wysyłany jest oktet ucieczki, po którym następuje oryginalny oktet danych z odwróconym bitem 5. Na przykład bajt 0x7E byłby przesyłany jako 0x7D 0x5E („10111110 01111010”). Inne zarezerwowane wartości oktetów (takie jak XON lub XOFF ) można w razie potrzeby zmienić w ten sam sposób.
„Sekwencja przerwania” 0x7D 0x7E kończy pakiet niekompletną sekwencją bajtów, zmuszając odbiornik do wykrycia błędu. Można to wykorzystać do przerwania transmisji pakietu bez szans, że częściowy pakiet zostanie zinterpretowany przez odbiorcę jako ważny.
Struktura
Zawartość ramki HDLC przedstawiono w poniższej tabeli:
Flaga | Adres | Kontrola | Informacja | FCS | Flaga |
---|---|---|---|---|---|
8 bitowy | 8 lub więcej bitów | 8 lub 16 bitów | Zmienna długość, 8 × n bitów | 16 lub 32 bity | 8 bitów |
Zauważ, że flaga końcowa jednej ramki może być (ale nie musi) flagą początkową (początkową) następnej ramki.
Dane są zwykle przesyłane jako wielokrotności 8 bitów, ale wymagają tego tylko niektóre warianty; inne teoretycznie zezwalają na wyrównanie danych na granicach innych niż 8-bitowe.
Sekwencja sprawdzania ramki (FCS) to 16-bitowa CRC-CCITT lub 32-bitowa CRC-32 obliczana na podstawie pól adresu, sterowania i informacji. Zapewnia środki, za pomocą których odbiornik może wykryć błędy, które mogły zostać wywołane podczas transmisji ramki, takie jak utracone bity, odwrócone bity i obce bity. Jednak biorąc pod uwagę, że algorytmy stosowane do obliczania FCS są takie, że prawdopodobieństwo niewykrycia niektórych rodzajów błędów transmisji rośnie wraz z długością danych sprawdzanych pod kątem błędów, FCS może pośrednio ograniczyć praktyczny rozmiar ramki.
Jeśli obliczenie FCS przez odbiorcę nie zgadza się z obliczeniem nadawcy, co wskazuje, że ramka zawiera błędy, odbiorca może albo wysłać do nadawcy pakiet negatywnego potwierdzenia , albo nic nie wysyłać. Po odebraniu pakietu potwierdzenia negatywnego lub po przekroczeniu limitu czasu oczekiwania na pakiet potwierdzenia pozytywnego, nadawca może ponownie przesłać ramkę, która zakończyła się niepowodzeniem.
FCS został zaimplementowany, ponieważ wiele wczesnych łączy komunikacyjnych charakteryzowało się stosunkowo wysokim bitowym współczynnikiem błędów , a FCS można było łatwo obliczyć za pomocą prostych, szybkich obwodów lub oprogramowania. Bardziej efektywne korekcji błędów w przód są obecnie szeroko stosowane przez inne protokoły.
Rodzaje stacji (komputerów) i tryby przesyłania danych
Synchronous Data Link Control ( SDLC ) został pierwotnie zaprojektowany do łączenia jednego komputera z wieloma urządzeniami peryferyjnymi za pośrednictwem magistrali multidrop . Oryginalny „tryb normalnej odpowiedzi” to tryb nadrzędny-podrzędny, w którym komputer (lub terminal główny ) daje każdemu urządzeniu peryferyjnemu ( terminalowi dodatkowemu ) pozwolenie na mówienie po kolei. Ponieważ cała komunikacja odbywa się do lub z terminala głównego, ramki zawierają tylko jeden adres, adres terminala wtórnego; terminal główny nie ma przypisanego adresu. Istnieje rozróżnienie między poleceniami wysyłane przez pierwotne do drugorzędnego i odpowiedzi wysyłane przez drugorzędne do głównego, ale nie jest to odzwierciedlone w kodowaniu; polecenia i odpowiedzi są nie do odróżnienia, z wyjątkiem różnicy w kierunku, w którym są przesyłane.
Tryb normalnej odpowiedzi umożliwia współdzielenie łącza drugorzędnego z głównym bez rywalizacji , ponieważ główny daje drugorzędnym pozwolenie na przesyłanie jednego po drugim. Umożliwia również działanie na półdupleksowych , o ile główny jest świadomy, że może nie nadawać, gdy udzielił pozwolenia drugorzędnemu.
Tryb odpowiedzi asynchronicznej jest dodatkiem HDLC do użytku w łączach pełnodupleksowych . Zachowując rozróżnienie pierwotne/wtórne, umożliwia transmisję wtórną w dowolnym momencie. Dlatego musi istnieć jakiś inny mechanizm zapewniający, że wiele drugorzędnych nie będzie próbowało nadawać w tym samym czasie (lub tylko jeden drugorzędny).
Asynchroniczny tryb zrównoważony dodaje koncepcję połączonego terminala , który może działać zarówno jako główny, jak i wtórny. Niestety ten tryb działania ma pewne subtelności implementacyjne. Podczas gdy najczęściej wysyłane ramki nie mają znaczenia, czy znajdują się w ramce polecenia, czy w odpowiedzi, niektóre istotne tak (zwłaszcza większość ramek nienumerowanych i każda ramka z ustawionym bitem P/F), a pole adresu odebranej ramki musi zostać zbadane w celu ustalenia, czy zawiera polecenie (odebrany adres jest nasz), czy odpowiedź (odebrany adres jest adresem drugiego terminala).
Oznacza to, że pole adresu nie jest opcjonalne, nawet w przypadku łączy typu punkt-punkt, w których nie jest potrzebne jednoznaczne określenie uczestnika, z którym się rozmawia. Niektóre warianty HDLC rozszerzają pole adresu, aby zawierało zarówno adres źródłowy, jak i docelowy lub wyraźny bit polecenia/odpowiedzi.
Operacje HDLC i typy ramek
Można wyróżnić trzy podstawowe typy ramek HDLC:
- Ramki informacyjne lub ramki typu I przenoszą dane użytkownika z warstwy sieciowej. Mogą również zawierać informacje o przepływie i kontroli błędów dołączone do danych.
- Ramki nadzorcze lub ramki S są używane do sterowania przepływem i błędami zawsze, gdy dołączanie jest niemożliwe lub niewłaściwe, na przykład gdy stacja nie ma danych do wysłania. Ramki S nie mają pól informacyjnych.
- Ramki nienumerowane lub ramki w kształcie litery U są używane do różnych różnych celów, w tym do zarządzania łączami. Niektóre U-ramki zawierają pole informacyjne, w zależności od typu.
Pole kontrolne
Ogólny format pola kontrolnego to:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
N(R) Odbierz numer sekwencyjny |
P/F |
N(S) Wyślij nr sekwencji |
0 | I-ramka | ||||
N(R) Odbierz numer sekwencyjny |
P/F | typ | 0 | 1 | Rama S | |||
typ | P/F | typ | 1 | 1 | Rama w kształcie litery U |
Istnieją również rozszerzone (dwubajtowe) formy ramek I i S. Ponownie, najmniej znaczący bit (skrajny na prawo w tej tabeli) jest wysyłany jako pierwszy.
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
N(R) Odbierz numer sekwencyjny |
P/F |
N(S) Wyślij nr sekwencji |
0 | Rozszerzona rama I | |||||||||||||
N(R) Odbierz numer sekwencyjny |
P/F | 0 | 0 | 0 | 0 | typ | 0 | 1 | Wydłużona rama S |
Bit P/F
Poll/Final to pojedynczy bit z dwiema nazwami. Nazywa się Poll, gdy jest częścią polecenia (ustawione przez stację główną w celu uzyskania odpowiedzi od stacji drugorzędnej), i Final, gdy jest częścią odpowiedzi (ustawione przez stację drugorzędną, aby wskazać odpowiedź lub koniec transmisji). We wszystkich innych przypadkach bit jest czysty.
Bit jest używany jako token , który jest przekazywany tam iz powrotem między stacjami. W danej chwili powinien istnieć tylko jeden token. Drużyna drugorzędna wysyła finał tylko wtedy, gdy otrzymała ankietę od szkoły podstawowej. Jednostka podstawowa wysyła ankietę tylko wtedy, gdy otrzyma odpowiedź końcową od jednostki pomocniczej lub po przekroczeniu limitu czasu wskazującego, że bit został utracony.
- W NRM posiadanie tokena odpytywania daje również adresowanemu drugorzędne pozwolenie na nadawanie. Wtórny ustawia bit F w swojej ostatniej ramce odpowiedzi, aby zrezygnować z pozwolenia na transmisję. (Jest to odpowiednik słowa „Over” w radiowej procedurze głosowej .)
- W ARM i ABM bit P wymusza odpowiedź. W tych trybach drugorzędny nie musi czekać na wysłanie zapytania, więc ostatni bit może być zawarty w pierwszej odpowiedzi po zapytaniu.
- Jeśli w rozsądnym czasie nie zostanie odebrana żadna odpowiedź na bit P, stacja główna przekracza limit czasu i ponownie wysyła P.
- Bit P/F jest sercem podstawowego schematu retransmisji w punkcie kontrolnym , który jest wymagany do wdrożenia HDLC; wszystkie inne warianty (takie jak rama REJ S) są opcjonalne i służą jedynie zwiększeniu wydajności. Za każdym razem, gdy stacja odbierze bit P/F, może założyć, że wszelkie ramki, które wysłała przed ostatnią transmisją bitu P/F i jeszcze niepotwierdzone, nigdy nie dotrą, a zatem powinny być retransmitowane.
Podczas pracy jako stacja łączona ważne jest zachowanie rozróżnienia między bitami P i F, ponieważ mogą działać jednocześnie dwa cykle punktów kontrolnych. Bit AP przychodzący w poleceniu ze stacji zdalnej nie jest odpowiedzią na nasz bit P; tylko bit F przybywający w odpowiedzi jest.
N(R), numer sekwencyjny odbioru
Obie ramki I i S zawierają odbierany numer sekwencyjny N(R). N(R) zapewnia pozytywne potwierdzenie odbioru ramek I z drugiej strony łącza. Jego wartością jest zawsze pierwsza ramka, która jeszcze nie została odebrana; potwierdza, że wszystkie ramki o wartościach N(S) do N(R)-1 (modulo 8 lub modulo 128) zostały odebrane i wskazuje N(S) następnej ramki, którą spodziewa się odebrać.
N(R) działa w ten sam sposób, niezależnie od tego, czy jest częścią polecenia, czy odpowiedzi. Stacja połączona ma tylko jedną przestrzeń numeru sekwencyjnego.
N(S), kolejny numer wysłanej ramki
Jest to zwiększane dla kolejnych ramek I, modulo 8 lub modulo 128. W zależności od liczby bitów w numerze sekwencyjnym, w dowolnym momencie na potwierdzenie może czekać do 7 lub 127 ramek I.
I-Frame (dane użytkownika)
Ramki informacyjne lub ramki typu I przenoszą dane użytkownika z warstwy sieciowej. Ponadto zawierają również informacje o przepływie i kontroli błędów połączone z danymi. Podpola w polu kontrolnym definiują te funkcje.
Najmniej znaczący bit (pierwszy przesłany) określa typ ramki. 0 oznacza ramkę I. Z wyjątkiem interpretacji pola P/F, nie ma różnicy między ramką I polecenia a ramką I odpowiedzi; gdy P/F wynosi 0, obie formy są dokładnie równoważne.
Ramy S (kontrolne)
Ramki nadzorcze lub „ramki S” są używane do kontroli przepływu i błędów, gdy dołączanie jest niemożliwe lub niewłaściwe, na przykład gdy stacja nie ma danych do wysłania. Ramki S w HDLC nie mają pól informacyjnych, chociaż niektóre protokoły wywodzące się z HDLC używają pól informacyjnych do „wieloselektywnego odrzucania”.
Pole kontrolne ramki S zawiera wiodącą „10” wskazującą, że jest to ramka S. Po nim następuje typ 2-bitowy, bit odpytywania/końcowy i 3-bitowy numer sekwencyjny. (Lub 4-bitowe pole wypełniające, po którym następuje 7-bitowy numer sekwencyjny).
Pierwsze (najmniej znaczące) 2 bity oznaczają, że jest to ramka S. Wszystkie ramki S zawierają bit P/F i numer sekwencyjny odbioru, jak opisano powyżej. Z wyjątkiem interpretacji pola P/F, nie ma różnicy między ramką S polecenia a ramką S odpowiedzi; gdy P/F wynosi 0, obie formy są dokładnie równoważne.
Odbiór gotowy (RR)
- Wartość bitu = 00 (0x00, aby dopasować kolejność bitów pola typu tabeli powyżej)
- Wskazuje, że nadawca jest gotowy do odbioru większej ilości danych (anuluje efekt poprzedniego RNR).
- Wyślij ten pakiet, jeśli chcesz wysłać pakiet, ale nie masz ramki I do wysłania.
- Stacja główna może wysłać to z ustawionym bitem P, aby poprosić o dane ze stacji drugorzędnej.
- Drugi terminal może użyć tego z ustawionym bitem F, aby odpowiedzieć na ankietę, jeśli nie ma danych do wysłania.
Brak gotowości odbioru (RNR)
- Wartość bitu = 01 (0x04, aby dopasować kolejność bitów pola typu tabeli powyżej)
- Potwierdź niektóre pakiety, ale nie proś o wysyłanie kolejnych aż do odwołania.
- Może być używany jak RR z ustawionym bitem P, aby uzyskać status stacji drugorzędnej
- Może być używany jak RR z ustawionym bitem F, aby odpowiedzieć na zapytanie, jeśli stacja jest zajęta.
Odrzuć (REJ)
- Wartość bitu = 10 (0x08, aby dopasować kolejność bitów pola typu tabeli powyżej)
- Żąda natychmiastowej retransmisji zaczynając od N(R).
- Wysyłane w odpowiedzi na zaobserwowaną lukę w numerze sekwencyjnym; np. po zobaczeniu I1/I2/I3/I5 wyślij REJ4.
- Opcjonalne do wygenerowania; działająca implementacja może używać tylko RR.
Selektywne odrzucanie (SREJ)
- Wartość bitu = 11 (0x0c, aby dopasować kolejność bitów pola typu tabeli powyżej)
- Żąda retransmisji tylko ramki N(R).
- Nieobsługiwane przez wszystkie warianty HDLC.
- Opcjonalne do wygenerowania; działająca implementacja może używać tylko RR lub tylko RR i REJ.
Ramy w kształcie litery U
Ramki nienumerowane lub ramki w kształcie litery U są używane głównie do zarządzania łączami, chociaż kilka z nich służy do przesyłania danych użytkownika. Wymieniają informacje dotyczące zarządzania sesją i sterowania między podłączonymi urządzeniami, a niektóre ramki w kształcie litery U zawierają pole informacyjne używane do informacji o zarządzaniu systemem lub danych użytkownika. Pierwsze 2 bity (11) oznaczają, że jest to ramka w kształcie litery U. Pięć typów bitów (2 przed bitem P/F i 3 bity po bicie P/F) może utworzyć 32 różne typy U-ramek. W kilku przypadkach to samo kodowanie jest używane do różnych rzeczy, takich jak polecenie i odpowiedź.
Ustawienie trybu
Różne tryby są opisane w § Konfiguracje łącza . Krótko mówiąc, istnieją dwa tryby nieoperacyjne (tryb inicjalizacji i tryb rozłączenia) oraz trzy tryby operacyjne (normalna odpowiedź, odpowiedź asynchroniczna i asynchroniczne tryby zrównoważone) z 3-bitowymi lub 7-bitowymi (rozszerzonymi) numerami sekwencyjnymi.
- Odpowiedź w trybie rozłączonym (DM)
- Gdy obwód wtórny jest odłączony (stan domyślny po włączeniu zasilania), wysyła tę ogólną odpowiedź do dowolnego zapytania (ramka polecenia z ustawioną flagą odpytywania) z wyjątkiem akceptowalnego polecenia ustawienia trybu. Może alternatywnie dać odpowiedź FRMR na niedopuszczalne polecenie ustawienia trybu.
- Nienumerowana odpowiedź potwierdzenia (UA)
- Jest to odpowiedź drugorzędnego na akceptowalne polecenie ustawienia trybu, wskazująca, że jest teraz w żądanym trybie.
- Ustaw tryb ... (SNRM, SARM, SABM) polecenie
- Umieść drugorzędny w określonym trybie, z 3-bitowymi numerami sekwencyjnymi (1-bajtowe pole kontrolne). Drugi potwierdza z UA. Jeśli drugorzędny nie implementuje trybu, odpowiada DM lub FRMR.
- Komenda Ustaw tryb rozszerzony (SNRME, SARME, SABME) Ustaw
- uzwojenie wtórne w określonym trybie z 7-bitowymi numerami sekwencyjnymi (2-bajtowe pole sterujące).
- Polecenie trybu ustawiania (SM)
- Ogólny tryb ustawiania, nowy w normie ISO/IEC 13239, wykorzystujący pole informacyjne do wybierania parametrów. Norma ISO/IEC 13239 dodała wiele dodatkowych opcji do HDLC, w tym 15- i 31-bitowe numery sekwencyjne, które można wybrać tylko za pomocą tego polecenia.
- Komenda Disconnect (DISC)
- Ta komenda powoduje, że drugorzędny potwierdza za pomocą UA i rozłącza się (wejście w tryb rozłączenia). Wszystkie niepotwierdzone ramki zostaną utracone.
- Żądanie odpowiedzi na rozłączenie (RD)
- Ta odpowiedź żąda od głównego serwera wysłania polecenia DISC. Główny powinien to zrobić szybko, ale może opóźnić się wystarczająco długo, aby upewnić się, że wszystkie oczekujące ramki zostaną potwierdzone.
- Polecenie Ustaw tryb inicjalizacji (SIM)
- To rzadko stosowane polecenie jest używane do przeprowadzania pewnych drugorzędnych inicjalizacji, takich jak pobieranie oprogramowania sprzętowego . To, co dzieje się w trybie inicjalizacji, nie jest inaczej określone w standardzie HDLC.
- Żądanie odpowiedzi w trybie inicjalizacji (RIM)
- Żąda, aby główny wysłał kartę SIM i zainicjował drugorzędny. Wysyła zamiast DM, jeśli drugorzędny wymaga inicjalizacji.
Transfer informacji
Ramki te mogą być używane jako część normalnego przesyłania informacji.
- Informacje nienumerowane (UI)
- Ta ramka (polecenie lub odpowiedź) przekazuje dane użytkownika, ale bez potwierdzenia lub retransmisji w przypadku błędu.
- Interfejs użytkownika ze sprawdzaniem nagłówka (UIH)
- Ta ramka (polecenie lub odpowiedź), rzadko używana jako dodatek do normy ISO/IEC 13239, jest podobna do interfejsu użytkownika, ale również nie obejmuje ochrony CRC. Tylko prefiks o konfigurowalnej długości („nagłówek”) ramki jest objęty wielomianem CRC; błędy w pozostałej części ramki nie są wykrywane.
- Polecenie odpytywania nienumerowanego (UP).
- To polecenie prosi o odpowiedź z drugorzędnego. Z ustawionym bitem odpytywania działa jak każda inna ramka odpytywania, bez potwierdzenia, które musi być zawarte w ramce I lub S. Z czystym bitem odpytywania ma to specjalne znaczenie w normalnym trybie odpowiedzi: drugorzędny może odpowiedzieć, nawet jeśli nie otrzymał bitu odpytywania. Jest to rzadko używane w HDLC, ale było używane w oryginalnym IBM SDLC jako substytut braku asynchronicznego trybu odpowiedzi; tam, gdzie kanał komunikacyjny mógłby obsłużyć równoczesne odpowiedzi, kanał główny okresowo wysyłałby UP na adres rozgłoszeniowy w celu zebrania wszelkich oczekujących odpowiedzi.
Odzyskiwanie błędów
- Odpowiedź na odrzucenie ramki (FRMR).
- Odpowiedź FRMR zawiera opis niedopuszczalnej ramki w znormalizowanym formacie. Pierwszy 1 lub 2 bajty to kopia odrzuconego pola kontrolnego, następny 1 lub 2 zawiera bieżące numery sekwencyjne nadawania i odbierania wtórnego (oraz flagę wskazującą, że ramka była odpowiedzią, mającą zastosowanie tylko w trybie zrównoważonym), a kolejne 4 lub 5 bitów to flagi błędów wskazujące przyczynę odrzucenia. Pomocniczy powtarza tę samą odpowiedź FRMR na każde odpytywanie, dopóki błąd nie zostanie usunięty przez polecenie ustawienia trybu lub RSET. Flagi błędów to:
- W: typ ramki (pole kontrolne) nie jest zrozumiały lub nie został zaimplementowany.
- X: typ ramki nie jest rozumiany z niepustym polem informacyjnym, ale jedno było obecne.
- Y: ramka zawierała pole informacyjne, które jest większe niż może zaakceptować element dodatkowy.
- Z: ramka zawierała nieprawidłowy numer sekwencyjny odbioru N(R), taki, który nie znajduje się pomiędzy poprzednio odebraną wartością a najwyższym wysłanym numerem sekwencyjnym. (Tego błędu nie można usunąć przez odebranie RSET, ale można go usunąć przez wysłanie RSET.)
- V: ramka zawierała niepoprawny numer sekwencji wysyłania N(S), większy niż ostatni potwierdzony numer plus rozmiar okna transmisji. Ten błąd jest możliwy tylko wtedy, gdy wynegocjowano rozmiar okna transmisji mniejszy niż maksymalny.
- Flagi błędów są zwykle dopełniane bitami 0 do granicy 8-bitowej, ale HDLC dopuszcza ramki, które nie są wielokrotnością bajta.
- Polecenie resetowania (RSET)
- Polecenie RSET powoduje, że drugorzędny resetuje swój numer sekwencyjny odbioru, więc następna oczekiwana ramka ma numer sekwencyjny 0. Jest to możliwa alternatywa dla wysłania nowego polecenia ustawiania trybu, które resetuje oba numery sekwencyjne. Jest to potwierdzane za pomocą UA, podobnie jak polecenie ustawienia trybu.
Odkrywanie rówieśników
- Identyfikacja giełdy (XID)
- Polecenie XID zawiera pole informacyjne określające możliwości jednostki podstawowej; drugorzędny odpowiada odpowiedzią XID określającą jego możliwości. Jest to zwykle wykonywane przed wysłaniem polecenia ustawienia trybu. Systems Network Architecture zdefiniowała jeden format dla pola informacyjnego, w którym najbardziej znaczący bit pierwszego bajtu jest czysty (0), ale implementacje HDLC zwykle implementują wariant zdefiniowany w ISO 8885, który ma najbardziej znaczący bit pierwszego zestawu bajtów (1).
- TEST
- Polecenie TEST to po prostu polecenie ping w celach debugowania. Ładunek polecenia TEST jest zwracany w odpowiedzi TEST.
Zdefiniowane w innych normach
Istnieje kilka ramek U, które nie są częścią HDLC, ale są zdefiniowane w innych powiązanych standardach.
- Niezarezerwowane (NR0, NR1, NR2, NR3)
- Standard HDLC gwarantuje, że „niezarezerwowane” polecenia i odpowiedzi będą dostępne do innych zastosowań.
- Ack connectionless (AC0, AC1)
- Są one zdefiniowane w standardzie sterowania łączem logicznym IEEE 802.2 .
- Konfiguruj (CFGR)
- To polecenie zostało zdefiniowane w SDLC do debugowania. Miał 1-bajtowy ładunek, który określał niestandardowy tryb testowy dla drugorzędnego. Liczby parzyste wyłączały ten tryb, a nieparzyste go włączały. Ładunek 0 wyłączył wszystkie tryby testowe. Pomocniczy zwykle potwierdzał polecenie konfiguracji, powtarzając je w odpowiedzi.
- Odpowiedź Beacon (BCN)
- Ta odpowiedź została zdefiniowana w SDLC w celu wskazania awarii komunikacji. Pomocniczy, który przez długi czas nie odbierał żadnych ramek, zacząłby wysyłać strumień odpowiedzi nawigacyjnych, umożliwiając zlokalizowanie usterki jednokierunkowej. Należy zauważyć, że norma ISO/IEC 13239 przypisuje UIH takie samo kodowanie jak BCN.
Konfiguracje linków
Konfiguracje łącza można podzielić na następujące kategorie:
- Niezbalansowany , który składa się z jednego zacisku głównego i jednego lub więcej zacisków wtórnych.
- Zbalansowany , który składa się z dwóch terminali równorzędnych.
Trzy konfiguracje łącza to:
- Tryb normalnej odpowiedzi (NRM) to niezrównoważona konfiguracja, w której tylko główny terminal może inicjować przesyłanie danych. Terminale drugorzędne przesyłają dane tylko w odpowiedzi na polecenia z terminala głównego. Terminal główny odpytuje każdy terminal drugorzędny, aby dać mu możliwość przesłania wszelkich posiadanych danych.
- Tryb odpowiedzi asynchronicznej (ARM) to niezrównoważona konfiguracja, w której terminale drugorzędne mogą nadawać bez pozwolenia terminala głównego. Jednak nadal istnieje wyodrębniony terminal główny, który zachowuje odpowiedzialność za inicjalizację linii, usuwanie błędów i rozłączenie logiczne.
- Asynchroniczny tryb zrównoważony (ABM) to zrównoważona konfiguracja, w której każda stacja może inicjować, nadzorować, usuwać błędy i wysyłać ramki w dowolnym momencie. Nie ma relacji pan/niewolnik. DTE ( urządzenie terminala danych ) i DCE ( urządzenie zakończenia obwodu danych ) są traktowane na równi. Inicjator asynchronicznego trybu zrównoważonego wysyła komunikat SABM.
Dodatkową konfiguracją łącza jest tryb Disconnected . Jest to tryb, w którym znajduje się stacja podrzędna, zanim zostanie zainicjowana przez stację podstawową lub gdy zostanie jawnie rozłączona. W tym trybie drugorzędny odpowiada na prawie każdą ramkę inną niż polecenie ustawienia trybu odpowiedzią „Tryb rozłączony”. Celem tego trybu jest umożliwienie urządzeniu podstawowemu niezawodnego wykrycia wyłączenia lub zresetowania urządzenia wtórnego.
Repertuar dowodzenia i reagowania HDLC
Minimalny zestaw wymagany do działania to:
- Komendy: I, RR, RNR, DISC oraz jedna z SNRM, SARM lub SABM
- Odpowiedzi: I, RR, RNR, UA, DM, FRMR
Podstawowe operacje
- Inicjalizacji może zażądać każda ze stron. Kiedy jednostka podstawowa wysyła jedno z sześciu poleceń ustawionych w trybie:
- Sygnalizuje drugiej stronie żądanie inicjalizacji
- Określa tryb, NRM, ABM, ARM
- Określa, czy używane są 3- czy 7-bitowe numery sekwencyjne.
Moduł HDLC na drugim końcu przesyła ramkę (UA), gdy żądanie zostanie zaakceptowane. Jeśli żądanie zostanie odrzucone, wysyła ramkę trybu rozłączenia (DM).
Rozszerzenia funkcjonalne (opcje)
- Do obwodów komutowanych
- Komendy: DODAJ – XID
- Odpowiedzi: DODAJ – XID, RD
- Dla 2-kierunkowych Jednoczesnych poleceń i odpowiedzi to ADD – REJ
- W przypadku poleceń i odpowiedzi dotyczących retransmisji pojedynczej ramki: ADD – SREJ
- W celu uzyskania informacji Komendy i odpowiedzi: ADD – Ul
- Do inicjalizacji
- Komendy: DODAJ – SIM
- Odpowiedzi: DODAJ – RIM
- Dla poleceń odpytywania grupowego
- : ADD – UP
- Adresowanie rozszerzone
- Usuń ramki odpowiedzi I
- Usuń ramki polecenia I
- Rozszerzona numeracja
- Do resetowania trybu (tylko ABM) Polecenia to: ADD – RSET
- Polecenia i odpowiedzi testowe łącza danych to: DODAJ – TEST
- Poproś o rozłączenie. Odpowiedzi to DODAJ – RD
- 32-bitowy FCS
Repertuar poleceń i odpowiedzi HDLC
Rodzaj ramy | Nazwa |
Polecenie/ Odpowiedź |
Opis | Informacje | Format pola C | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
Informacje(I) | C/R | Wymiana danych użytkownika | N(R) | P/F | N(S) | 0 | ||||||
Nadzorca (S) | Odbiór gotowy (RR) | C/R | Pozytywne uznanie | Gotowy do odbioru I-ramki N(R) | N(R) | P/F | 0 | 0 | 0 | 1 | ||
Brak gotowości odbioru (RNR) | C/R | Pozytywne uznanie | Niegotowy do odbioru | N(R) | P/F | 0 | 1 | 0 | 1 | |||
Odrzuć (REJ) | C/R | Negatywne potwierdzenie | Retransmituj zaczynając od N(R) | N(R) | P/F | 1 | 0 | 0 | 1 | |||
Selektywne odrzucanie (SREJ) | C/R | Negatywne potwierdzenie | Tylko retransmisja N(R) | N(R) | P/F | 1 | 1 | 0 | 1 |
Nienumerowane ramki
Ramki nienumerowane są identyfikowane przez dwa najniższe bity o wartości 1. Z flagą P/F pozostawia 5 bitów jako typ ramki. Chociaż w użyciu jest mniej niż 32 wartości, niektóre typy mają różne znaczenie w zależności od kierunku, w którym są wysyłane: jako polecenie lub jako odpowiedź. Związek między DISC (rozłączenie) a odpowiedzią RD (żądanie rozłączenia) wydaje się wystarczająco jasny, ale powód, dla którego polecenie SARM jest liczbowo równe odpowiedzi DM , jest niejasny.
Nazwa |
Polecenie/ Odpowiedź |
Opis | Informacje | Format pola C | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
Ustaw tryb normalnej odpowiedzi SNRM | C | Ustaw tryb | Użyj 3-bitowego numeru sekwencyjnego | 1 | 0 | 0 | P | 0 | 0 | 1 | 1 |
SNRM rozszerzony SNRME | C | Ustaw tryb; rozszerzony | Użyj 7-bitowego numeru sekwencyjnego | 1 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Ustaw tryb odpowiedzi asynchronicznej SARM | C | Ustaw tryb | Użyj 3-bitowego numeru sekwencyjnego | 0 | 0 | 0 | P | 1 | 1 | 1 | 1 |
SARM rozszerzony SARM | C | Ustaw tryb; rozszerzony | Użyj 7-bitowego numeru sekwencyjnego | 0 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Ustaw asynchroniczny tryb zrównoważony SABM | C | Ustaw tryb | Użyj 3-bitowego numeru sekwencyjnego | 0 | 0 | 1 | P | 1 | 1 | 1 | 1 |
SABM rozszerzył SABME | C | Ustaw tryb; rozszerzony | Użyj 7-bitowego numeru sekwencyjnego | 0 | 1 | 1 | P | 1 | 1 | 1 | 1 |
Ustaw tryb SM | C | Ustaw tryb, ogólny | Nowość w ISO 13239 | 1 | 1 | 0 | P | 0 | 0 | 1 | 1 |
Ustaw tryb inicjalizacji karty SIM | C | Zainicjować funkcję sterowania łączem w adresowanej stacji | 0 | 0 | 0 | P | 0 | 1 | 1 | 1 | |
Poproś o tryb inicjalizacji RIM | R | Potrzebna inicjalizacja | Żądanie polecenia SIM | 0 | 0 | 0 | F | 0 | 1 | 1 | 1 |
Odłącz PŁYTĘ | C | Zakończ połączenie łącza logicznego | Przyszłe ramki I i S zwracają DM | 0 | 1 | 0 | P | 0 | 0 | 1 | 1 |
Poproś o rozłączenie RD | R | Prośba o dowództwo DISC | 0 | 1 | 0 | F | 0 | 0 | 1 | 1 | |
Nienumerowane potwierdzenie UA | R | Potwierdź akceptację jednego z poleceń trybu ustawiania. | 0 | 1 | 1 | F | 0 | 0 | 1 | 1 | |
Tryb rozłączenia DM | R | Respondent w trybie rozłączonym | Wymagany zestaw trybów | 0 | 0 | 0 | F | 1 | 1 | 1 | 1 |
Nienumerowany interfejs informacyjny | C/R | Niepotwierdzone dane | Ma ładunek | 0 | 0 | 0 | P/F | 0 | 0 | 1 | 1 |
Interfejs użytkownika z kontrolą nagłówka UIH | C/R | Niepotwierdzone dane | Nowość w ISO 13239 | 1 | 1 | 1 | P/F | 1 | 1 | 1 | 1 |
Ankieta nienumerowana UP | C | Służy do pozyskiwania informacji kontrolnych | 0 | 0 | 1 | P | 0 | 0 | 1 | 1 | |
Zresetuj RSET | C | Służy do regeneracji | Resetuje N(R), ale nie N(S) | 1 | 0 | 0 | P | 1 | 1 | 1 | 1 |
Identyfikator wymiany XID | C/R | Służy do żądania/zgłaszania możliwości | 1 | 0 | 1 | P/F | 1 | 1 | 1 | 1 | |
TESTUJ _ | C/R | Wymień identyczne pola informacyjne do testowania | 1 | 1 | 1 | P/F | 0 | 0 | 1 | 1 | |
Odrzuć ramkę FRMR | R | Zgłoś odbiór niedopuszczalnej ramki | 1 | 0 | 0 | F | 0 | 1 | 1 | 1 | |
Niezarezerwowany 0 NR0 | C/R | Niestandaryzowane | Do użytku aplikacji | 0 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Niezarezerwowany 1 NR1 | C/R | Niestandaryzowane | Do użytku aplikacji | 1 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Niezarezerwowane 2 NR2 | C/R | Niestandaryzowane | Do użytku aplikacji | 0 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Niezarezerwowane 3 NR3 | C/R | Niestandaryzowane | Do użytku aplikacji | 1 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Potwierdź bezpołączeniowy, sekwencja 0 AC0 | C/R | Nie jest częścią HDLC | Rozszerzenie IEEE 802.2 LLC | 0 | 1 | 1 | P/F | 0 | 1 | 1 | 1 |
Potwierdź bezpołączeniowy, sekwencja 1 AC1 | C/R | Nie jest częścią HDLC | Rozszerzenie IEEE 802.2 LLC | 1 | 1 | 1 | P/F | 0 | 1 | 1 | 1 |
Skonfiguruj do testowania CFGR | C/R | Nie jest częścią HDLC | Był częścią SDLC | 1 | 1 | 0 | P/F | 0 | 1 | 1 | 1 |
Beacon BCN | R | Nie jest częścią HDLC | Był częścią SDLC | 1 | 1 | 1 | F | 1 | 1 | 1 | 1 |
Format pola C | Komenda | Odpowiedź | Format pola C | Komenda | Odpowiedź | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||
1 | 1 | 0 | 0 | P/F | 0 | 0 | 0 | interfejs użytkownika | 1 | 1 | 1 | 0 | P/F | 0 | 1 | 0 | (nie używany) | |||
1 | 1 | 0 | 0 | P/F | 0 | 0 | 1 | SNRM | 1 | 1 | 1 | 0 | P/F | 0 | 1 | 1 | CFGR | |||
1 | 1 | 0 | 0 | P/F | 0 | 1 | 0 | DYSK | R & D | 1 | 1 | 1 | 0 | P/F | 1 | 0 | X | (nie używany) | ||
1 | 1 | 0 | 0 | P/F | 0 | 1 | 1 | SM | 1 | 1 | 1 | 0 | P/F | 1 | 1 | X | AC0–AC1 | |||
1 | 1 | 0 | 0 | P/F | 1 | 0 | 0 | W GÓRĘ | 1 | 1 | 1 | 1 | P/F | 0 | 0 | 0 | SARM | DM | ||
1 | 1 | 0 | 0 | P/F | 1 | 0 | 1 | (nie używany) | 1 | 1 | 1 | 1 | P/F | 0 | 0 | 1 | RSET | |||
1 | 1 | 0 | 0 | P/F | 1 | 1 | 0 | UA | 1 | 1 | 1 | 1 | P/F | 0 | 1 | 0 | SARM | |||
1 | 1 | 0 | 0 | P/F | 1 | 1 | 1 | TEST | 1 | 1 | 1 | 1 | P/F | 0 | 1 | 1 | SNRME | |||
1 | 1 | 0 | 1 | P/F | 0 | X | X | NR0–NR3 | 1 | 1 | 1 | 1 | P/F | 1 | 0 | 0 | SABM | |||
1 | 1 | 0 | 1 | P/F | 1 | X | X | (nie używany) | 1 | 1 | 1 | 1 | P/F | 1 | 0 | 1 | XID | |||
1 | 1 | 1 | 0 | P/F | 0 | 0 | 0 | SIM | OBRĘCZ | 1 | 1 | 1 | 1 | P/F | 1 | 1 | 0 | SABME | ||
1 | 1 | 1 | 0 | P/F | 0 | 0 | 1 | FRMR | 1 | 1 | 1 | 1 | P/F | 1 | 1 | 1 | UIH | |||
BCN |
Ramki UI, UIH, XID, TEST zawierają ładunek i mogą być używane zarówno jako polecenia, jak i odpowiedzi. Polecenie SM i odpowiedź FRMR również zawierają ładunek.
- Ramka interfejsu użytkownika zawiera informacje o użytkowniku, ale w przeciwieństwie do ramki I nie jest ani potwierdzana, ani retransmitowana w przypadku jej utraty.
- Ramka UIH (dodatek ISO/IEC 13239) jest podobna do ramki UI, ale dodatkowo stosuje sekwencję sprawdzania ramki tylko do prefiksu o określonej długości; błędy transmisji po tym prefiksie nie są wykrywane.
- Ramka XID służy do wymiany możliwości terminala. Systems Network Architecture zdefiniował jeden format, ale częściej używany jest wariant zdefiniowany w ISO 8885. Podstawowy ogłasza swoje możliwości za pomocą polecenia XID, a drugorzędny zwraca swoje własne możliwości w odpowiedzi XID.
- Ramka TEST jest po prostu poleceniem ping do celów debugowania. Ładunek polecenia TEST jest zwracany w odpowiedzi TEST.
- Polecenie SM (dodatek ISO/IEC 13239) to ogólne polecenie „trybu ustawiania”, które zawiera pole informacyjne (w tym samym formacie ISO 8885 co XID) określające parametry. Pozwala to na negocjowanie wartości parametrów (takich jak 15- i 31-bitowe numery sekwencyjne) oraz parametrów, takich jak rozmiary okien i maksymalne rozmiary ramek, których nie można wyrazić za pomocą standardowych sześciu poleceń ustawionych w trybie.
- Odpowiedź FRMR zawiera opis niedopuszczalnej ramki w znormalizowanym formacie. Pierwszy 1 lub 2 bajty to kopia odrzuconego pola kontrolnego, następny 1 lub 2 zawiera bieżące numery sekwencyjne nadawania i odbierania wtórnego, a kolejne 4 lub 5 bitów to flagi błędów wskazujące przyczynę odrzucenia.
Zobacz też
Notatki
- Przyjaciel, George E.; Fike, John L.; Baker, H. Charles; Bellamy, John C. (1988). Zrozumienie komunikacji danych (wyd. 2). Indianapolis: Howard W. Sams & Company. ISBN 0-672-27270-9 .
- Stallings, William (2004). Komunikacja danych i komputerów (wyd. 7). Upper Saddle River: Pearson/Prentice Hall. ISBN 978-0-13-100681-2 .
-
S. Tanenbaum, Andrew (2005). Sieci komputerowe (wyd. 4). 482, FIE, Patparganj, Delhi 110 092: Dorling Kindersley (Indie) Pvt. Ltd., licencje Pearson Education w Azji Południowej. ISBN 81-7758-165-1 .
{{ cite book }}
: CS1 maint: lokalizacja ( link )
Linki zewnętrzne
- PPP w ramce HDLC zorientowanej w czasie rzeczywistym . RFC2687 . _
- PPP w kadrowaniu podobnym do HDLC . RFC1662 . _ STD 51.
- Wykłady z komunikacji danych Manfreda Lindnera - część HDLC
- Format pakietu HDLC i inne informacje
- [ martwy link ]
- ISO 3309: 1984 Systemy przetwarzania informacji — komunikacja danych — procedury kontroli łącza danych wysokiego poziomu — struktura ramek ( zarchiwizowane )
- ISO 4335: 1984 Przesyłanie danych — procedury kontroli łącza danych wysokiego poziomu — konsolidacja elementów procedur ( archiwum )
- ISO/IEC 13239:2002