Warstwa łącza danych - Data link layer

Warstwa łącza danych , lub warstwa 2 , to druga warstwa siedmiu warstw modelu OSI w sieciach komputerowych . Ta warstwa jest warstwą protokołu, która przesyła dane między węzłami w segmencie sieci przez warstwę fizyczną . Warstwa łącza danych zapewnia funkcjonalne i proceduralne środki do przesyłania danych między jednostkami sieci, a także może zapewniać środki do wykrywania i ewentualnie korygowania błędów, które mogą wystąpić w warstwie fizycznej.

Warstwa łącza danych dotyczy lokalnego dostarczania ramek między węzłami na tym samym poziomie sieci. Ramki łącza danych, jak nazywa się te jednostki danych protokołu , nie przekraczają granic sieci lokalnej. Routing międzysieciowy i adresowanie globalne to funkcje wyższej warstwy, umożliwiające protokołom łącza danych skupienie się na dostarczaniu lokalnym, adresowaniu i arbitrażu mediów. W ten sposób warstwa łącza danych jest analogiczna do sąsiedniego policjanta ruchu drogowego; stara się rozstrzygać między stronami walczącymi o dostęp do medium, bez troski o ich ostateczne przeznaczenie. Gdy urządzenia próbują jednocześnie korzystać z nośnika, dochodzi do kolizji ramek. Protokoły łącza danych określają, w jaki sposób urządzenia wykrywają i naprawiają takie kolizje, i mogą zapewniać mechanizmy ich ograniczania lub zapobiegania.

Przykładami protokołów łącza danych są Ethernet , protokół Point-to-Point (PPP), HDLC i ADCCP . W pakiecie Internet Protocol Suite (TCP/IP) funkcjonalność warstwy łącza danych jest zawarta w warstwie łącza , najniższej warstwie modelu opisowego, która z założenia jest niezależna od infrastruktury fizycznej.

Funkcjonować

Łącze danych zapewnia przesyłanie ramek danych między hostami podłączonymi do łącza fizycznego. W ramach semantyki architektury sieci OSI protokoły warstwy łącza danych odpowiadają na żądania usług z warstwy sieci i wykonują swoją funkcję, wysyłając żądania usług do warstwy fizycznej . Taki transfer może być wiarygodny lub niewiarygodny ; wiele protokołów łącza danych nie ma potwierdzeń pomyślnego odbioru i akceptacji ramek, a niektóre protokoły łącza danych mogą nawet nie przeprowadzać żadnych kontroli błędów transmisji. W takich przypadkach protokoły wyższego poziomu muszą zapewniać kontrolę przepływu , sprawdzanie błędów, potwierdzenia i retransmisję.

Nagłówek ramki zawiera adres źródłowy i docelowy, które wskazują, które urządzenie wysłało ramkę i które urządzenie ma ją odebrać i przetworzyć. W przeciwieństwie do hierarchicznych i rutowalnych adresów warstwy sieciowej, adresy warstwy 2 są płaskie, co oznacza, że ​​żadna część adresu nie może być użyta do identyfikacji logicznej lub fizycznej grupy, do której należy adres.

W niektórych sieciach, takich jak sieci lokalne IEEE 802 , warstwa łącza danych jest opisana bardziej szczegółowo z podwarstwami kontroli dostępu do mediów (MAC) i kontroli łącza logicznego (LLC); oznacza to, że protokół IEEE 802.2 LLC może być używany ze wszystkimi warstwami MAC IEEE 802, takimi jak Ethernet, Token Ring , IEEE 802.11 itp., a także z niektórymi warstwami MAC innymi niż 802, takimi jak FDDI . Inne protokoły warstwy łącza danych, takie jak HDLC , uwzględniają obie podwarstwy, chociaż niektóre inne protokoły, takie jak Cisco HDLC , wykorzystują niskopoziomowe ramkowanie HDLC jako warstwę MAC w połączeniu z inną warstwą LLC. W standardzie ITU-T G.hn , który umożliwia tworzenie szybkiej (do 1 Gigabit/s) sieci lokalnej z wykorzystaniem istniejącego okablowania domowego ( linie energetyczne , telefoniczne i kable koncentryczne ), warstwa łącza danych jest podzielony na trzy podwarstwy (konwergencja protokołów aplikacji, kontrola łączy logicznych i kontrola dostępu do mediów).

Podwarstwy

Warstwa łącza danych jest często podzielona na dwie podwarstwy: kontrolę łącza logicznego (LLC) i kontrolę dostępu do nośnika (MAC).

Podwarstwa kontroli łącza logicznego

Najwyższa podwarstwa, LLC, multipleksuje protokoły działające na górze warstwy łącza danych i opcjonalnie zapewnia kontrolę przepływu, potwierdzanie i powiadamianie o błędach. LLC zapewnia adresowanie i kontrolę łącza danych. Określa, jakie mechanizmy mają być wykorzystane do adresowania stacji przez medium transmisyjne oraz do sterowania danymi wymienianymi między maszynami nadawcy i odbiorcy.

Podwarstwa kontroli dostępu do mediów

MAC może odnosić się do podwarstwy, która określa, kto ma dostęp do mediów w dowolnym momencie (np. CSMA/CD ). Innym razem odnosi się do struktury ramki dostarczanej w oparciu o znajdujące się wewnątrz adresy MAC .

Generalnie istnieją dwie formy kontroli dostępu do mediów: rozproszona i scentralizowana. Obie te rzeczy można porównać do komunikacji między ludźmi. W sieci składającej się z ludzi mówiących, tj. konwersacji, każdy z nich przerwie losową ilość czasu, a następnie spróbuje mówić ponownie, skutecznie ustanawiając długą i skomplikowaną grę polegającą na mówieniu „nie, ty pierwszy”.

Podwarstwa Media Access Control wykonuje również synchronizację ramek , która określa początek i koniec każdej ramki danych w strumieniu transmisji . Pociąga to za sobą jedną z kilku metod: wykrywanie oparte na czasie, liczenie znaków, wypychanie bajtów i wypychanie bitów.

  • Podejście oparte na czasie przewiduje określoną ilość czasu między klatkami.
  • Liczenie znaków śledzi liczbę pozostałych znaków w nagłówku ramki. Ta metoda jest jednak łatwo zakłócona, jeśli to pole jest uszkodzone.
  • Wypełnianie bajtów poprzedza ramkę specjalną sekwencją bajtów, taką jak DLE STX i następuje po niej przez DLE ETX . Wyglądy DLE (wartość bajtu 0x10) muszą być zmienione za pomocą innego DLE. Znaki początku i końca są wykrywane w odbiorniku i usuwane, podobnie jak wstawione znaki DLE.
  • Podobnie, wypychanie bitów zastępuje te znaczniki początku i końca flagami składającymi się ze specjalnego wzorca bitowego (np. 0, sześć bitów 1 i 0). Wystąpienia tego wzorca bitowego w przesyłanych danych unika się przez wstawienie bitu. Aby użyć przykładu, w którym flaga to 01111110, 0 jest wstawiane po 5 kolejnych jedynkach w strumieniu danych. Flagi i wstawione zera są usuwane po stronie odbiorczej. Pozwala to na dowolne długie ramki i łatwą synchronizację dla odbiorcy. Wypełniony bit jest dodawany nawet wtedy, gdy następny bit danych ma wartość 0, co nie może być pomylone z sekwencją synchronizacji , dzięki czemu odbiornik może jednoznacznie odróżnić wypchane bity od normalnych bitów.

Usługi

Usługi świadczone przez warstwę łącza danych to:

Wykrywanie i korekcja błędów

Oprócz ramkowania warstwa łącza danych może również wykrywać i naprawiać błędy transmisji. Aby odbiorca wykrył błędy transmisji, nadawca musi dodać nadmiarowe informacje jako kod wykrywania błędów do wysyłanej ramki. Gdy odbiornik otrzymuje ramkę, sprawdza, czy odebrany kod wykrywania błędu pasuje do przeliczonego kodu wykrywania błędu.

Kod wykrywania błędów można zdefiniować jako funkcję obliczającą r (ilość nadmiarowych bitów) odpowiadającą każdemu ciągowi o całkowitej liczbie N bitów. Najprostszym kodem wykrywania błędów jest bit parzystości , który umożliwia odbiornikowi wykrycie błędów transmisji, które wpłynęły na pojedynczy bit wśród transmitowanych N + r bitów. Jeśli istnieje wiele odwróconych bitów, metoda sprawdzania może nie być w stanie wykryć tego po stronie odbiornika. Istnieją bardziej zaawansowane metody niż wykrywanie błędów parzystości, zapewniające wyższą jakość i funkcje.

h mi L L O
8 5 12 12 15

Prostym przykładem tego, jak to działa przy użyciu metadanych, jest przesłanie słowa „HELLO” poprzez zakodowanie każdej litery jako jej pozycji w alfabecie. Tak więc litera A jest zakodowana jako 1, B jako 2 i tak dalej, jak pokazano w tabeli po prawej stronie. Zsumowanie otrzymanych liczb daje 8 + 5 + 12 + 12 + 15 = 52, a 5 + 2 = 7 oblicza metadane. Na koniec przesyłana jest sekwencja numerów „8 5 12 12 15 7”, którą odbiorca zobaczy na swoim końcu, jeśli nie ma błędów transmisji. Odbiorca wie, że ostatnia otrzymana liczba to metadane wykrywające błędy i że wszystkie dane przed nią to komunikat, więc odbiorca może ponownie obliczyć powyższą matematykę i jeśli metadane są zgodne, można stwierdzić, że dane zostały odebrane bez błędów. Jeśli jednak odbiorca zobaczy coś w rodzaju „7 5 12 12 15 7” (pierwszy element zmieniony przez jakiś błąd), może przeprowadzić sprawdzenie, obliczając 7 + 5 + 12 + 12 + 15 = 51 i 5 + 1 = 6 i odrzuć odebrane dane jako wadliwe, ponieważ 6 nie jest równe 7.

Bardziej wyrafinowane algorytmy wykrywania i korekcji błędów mają na celu zmniejszenie ryzyka, że ​​wiele błędów transmisji danych zniesie się nawzajem i pozostaną niewykryte. Algorytmem, który może nawet wykryć, czy odebrane zostały prawidłowe bajty, ale nie są one w porządku, jest cykliczna kontrola nadmiarowa lub CRC. Algorytm ten jest często używany w warstwie łącza danych.

Przykłady protokołów

Związek z modelem TCP/IP

W pakiecie Internet Protocol Suite (TCP/IP) funkcjonalność warstwy łącza danych OSI jest zawarta w jego najniższej warstwie, warstwie łącza . Warstwa łącza TCP/IP obejmuje zakres operacyjny łącza, do którego podłączony jest host, i zajmuje się tylko kwestiami sprzętowymi aż do uzyskania adresów sprzętowych (MAC) do lokalizowania hostów w łączu i przesyłania ramek danych do łącza. Funkcjonalność warstwy łącza została opisana w dokumencie RFC 1122 i jest zdefiniowana inaczej niż warstwa łącza danych w OSI i obejmuje wszystkie metody, które wpływają na łącze lokalne.

Model TCP/IP nie jest odgórnym, kompleksowym odniesieniem do projektowania sieci. Został on sformułowany w celu zilustrowania grup logicznych i zakresów funkcji potrzebnych do projektowania zestawu protokołów intersieciowych TCP/IP, potrzebnych do działania Internetu. Ogólnie rzecz biorąc, należy unikać bezpośrednich lub ścisłych porównań modeli OSI i TCP/IP, ponieważ tworzenie warstw w TCP/IP nie jest głównym kryterium projektowym i ogólnie jest uważane za „szkodliwe” (RFC 3439). W szczególności protokół TCP/IP nie narzuca ścisłej hierarchicznej sekwencji wymagań dotyczących enkapsulacji, co przypisuje się protokołom OSI.

Zobacz też

Bibliografia

Zewnętrzne linki