Warstwa łącza danych

Porównanie warstw
modelu TCP/IP i modelu OSI
Model OSIModel TCP/IP
aplikacjiaplikacji
prezentacji
sesji
transportowatransportowa
sieciowainternetowa
łącza danychdostępu do sieci
fizyczna

Warstwa łącza danych (od ang. data link layer, DLL) – druga warstwa w modelu OSI/ISO i w modelu TCP/IP (=modelu DoD). Protokoły tej warstwy służą do przemieszczania datagramu pojedynczym łączem. Protokół warstwy łącza danych definiuje format pakietów wymienianych między węzłami znajdującymi się na końcach łączy, a także działania podejmowane przez te węzły w trakcie wysyłania i odbierania pakietów. Jednostki danych przesyłane przez protokół warstwy łącza danych są nazywane ramkami, każda ramka zwykle kapsułkuje jeden datagram warstwy sieciowej.

Operacje wykonywane przez protokół warstwy łącza danych w chwili wysyłania i odbierania ramek uwzględniają detekcję błędów, retransmisje, sterowanie przepływem i losowy dostęp. Przykładami protokołów warstwy łącza danych są Ethernet 802.11 (stosowany w bezprzewodowych sieciach lokalnych; inaczej Wi-Fi), token ring i PPP. W wielu sytuacjach ATM też może być uważany za protokół warstwy łącza danych.

Zadania warstwy

Zadaniem protokołu warstwy sieci jest przemieszczanie segmentów warstwy transportowej między węzłem źródłowym i docelowym. Z kolei rolą protokołu warstwy łącza danych jest transferowanie pojedynczym łączem ścieżki datagramów warstwy sieci od węzła źródłowego do węzła docelowego. Istotną cechą warstwy łącza danych jest to, że datagram może być przetwarzany przez odmienne protokoły używane przez różne łącza ścieżki. Przykładowo, w przypadku pierwszego łącza datagram może być obsługiwany przez protokół Ethernet, przy ostatnim łączu przez protokół PPP, natomiast w przypadku łączy pośredniczących przez protokół sieci rozległej. Godne uwagi jest to, że usługi świadczone przez protokoły warstwy łącza danych mogą się różnić. Przykładowo, protokół warstwy łącza danych może, ale nie musi, zapewniać usługę niezawodnego dostarczania. A zatem warstwa sieci musi być w stanie zrealizować postawione przed nią zadanie, gdy ma do czynienia z heterogenicznym zestawem usług warstwy łącza danych.

Choć podstawowa usługa warstwy łącza danych polega na przemieszczaniu pojedynczym łączem komunikacyjnym datagramu od jednego węzła do drugiego sąsiedniego, szczegóły usługi mogą się różnić w przypadku poszczególnych protokołów warstwy łącza danych. Do usług, które mogą być oferowane przez protokół warstwy łącza danych, należy zaliczyć następujące:

Ramkowanie

Protokoły warstwy łącza danych przed umieszczeniem w łączu każdego datagramu warstwy sieci kapsułkują go w ramce warstwy łącza danych. Ramka zawiera nagłówek ramki dodawany przez warstwę łącza danych oraz pole danych, w którym jest umieszczany datagram warstwy sieci. Ramka może też uwzględniać pola końca ramki; jednak zarówno te pola, jak i pola nagłówka traktowane są jako nagłówek. Struktura ramki jest określana przez protokół warstwy łącza danych.

Dostęp do łącza

Protokół kontroli dostępu do nośnika MAC (Medium Access Control) określa zasady, według których ramka będzie transmitowana łączem. W przypadku łączy punkt-punkt, które z jednej strony mają pojedynczego nadawcę, natomiast z drugiej jednego odbiorcę, protokół MAC jest prosty lub się go nie stosuje. Nadawca może wysyłać ramkę każdorazowo, gdy łącze znajduje się w stanie bezczynności. Bardziej interesująca jest sytuacja, w której wiele węzłów współużytkuje pojedyncze łącze rozgłaszania. Jest to tak zwany problem wielodostępności. W tym przypadku protokół MAC zajmuje się koordynowaniem transmitowania ramek przez wiele węzłów.

Niezawodne dostarczanie (łącza)

Gdy protokół warstwy łącza danych oferuje usługę niezawodnego dostarczania, gwarantuje bezbłędne przesłanie łączem każdego datagramu warstwy sieci. Określone protokoły warstwy transportowej, w tym TCP, też świadczą usługę niezawodnego dostarczania danych. Podobnie jak w przypadku warstwy transportowej usługa niezawodnego dostarczania danych warstwy łącza danych jest realizowana za pomocą potwierdzeń i retransmisji. Usługa ta jest często używana w przypadku łączy, które są podatne na duże ilości błędów, tak jak łącza bezprzewodowe. Zamiast wymuszania przeprowadzenia przez protokół warstwy transportowej lub warstwy aplikacji ponownej transmisji danych między węzłami, usługa ma za zadanie usuwać błędy lokalnie, czyli w łączu, w którym wystąpiły. Jednak w przypadku łączy o niewielkiej liczbie błędów (światłowód, kabel koncentryczny i wiele miedzianych skrętek) usługa niezawodnego dostarczania warstwy łącza danych może być uznana za powodującą niepotrzebne obciążenie. Z tego powodu wiele protokołów warstwy łącza danych używanych w tradycyjnych sieciach nie oferuje usługi niezawodnego dostarczania.

Kontrola przepływu

Węzły z obu stron łącza posiadają ograniczone możliwości buforowania ramek. Stanowi to potencjalny problem, gdy węzeł odbiorczy może otrzymywać ramki z szybkością przekraczającą szybkość ich przetwarzania. Bez kontroli przepływu bufor węzła odbiorczego może się przepełnić i ramki mogą zostać utracone. Podobnie jak w przypadku warstwy transportowej protokół warstwy łącza danych może oferować kontrolę przepływu, aby uniemożliwić węzłowi nadawczemu znajdującemu się z jednej strony łącza przeciążenie węzła odbiorczego zlokalizowanego po drugiej stronie łącza.

Detekcja błędów

Węzeł odbiorczy może nieprawidłowo odczytać bity ramki. Tego typu błędy bitowe są spowodowane tłumieniem sygnału i zakłóceniami elektromagnetycznymi. Ponieważ nie ma sensu przekazywanie datagramu posiadającego błąd, wiele protokołów warstwy łącza danych oferuje mechanizm wykrywający obecność jednego lub większej liczby błędów. Polega to na nakazaniu węzłowi nadawczemu ustawienia w ramce bitów detekcji błędów, natomiast węzłowi odbiorczemu przeprowadzenia kontroli błędów. W przypadku protokołów warstwy łącza danych detekcja błędów jest bardzo często spotykaną usługą. Internetowe warstwy transportowa i sieci również w ograniczonym zakresie zapewniają wykrywanie błędów. Detekcja błędów warstwy łącza danych jest zwykle bardziej złożona i implementowana na poziomie sprzętowym.

Usuwanie błędów

Usuwanie błędów przypomina detekcję błędów, z tym, że węzeł odbiorczy nie tylko wykrywa błędy pojawiające się w ramce, ale też dokładnie stwierdza, w którym miejscu ramki wystąpiły i eliminuje je. Niektóre protokoły, takie jak ATM, zapewniają usługę usuwania błędów warstwy łącza danych, która zamiast dla całego pakietu obowiązuje tylko dla jego nagłówka.

Półdupleks i pełny dupleks

W wypadku transmisji w trybie pełnego dupleksu węzły po obu końcach łącza mogą jednocześnie przesyłać pakiety. W przypadku transmisji w trybie półdupleksu węzeł nie może w tym samym czasie wysyłać i odbierać danych.

Jak wyżej wspomniano, wiele usług zapewnianych przez warstwę łącza danych jest bardzo podobnych do usług świadczonych przez warstwę transportową. Przykładowo, obie warstwy mogą oferować usługę niezawodnego dostarczania. Choć mechanizmy używane przez te dwie warstwy w celu świadczenia usługi niezawodnego dostarczania są do siebie podobne, usługi w przypadku obu warstw nie są identyczne. Protokół warstwy transportowej zapewnia niezawodne dostarczanie między dwoma procesami poszczególnych par węzłów końcowych. Z kolei protokół warstwy łącza danych udostępnia taką usługę między dwoma węzłami połączonymi pojedynczym łączem. Zarówno protokół warstwy łącza danych, jak i warstwy transportowej może oferować kontrolę przepływu i wykrywanie błędów. Kontrola przepływu protokołu warstwy transportowej jest zapewniana dla poszczególnych par węzłów końcowych, natomiast w przypadku protokołu warstwy łącza danych dla pary sąsiednich węzłów.