Podstawy sieci komputerowych
13. Zadania warstwy łącza danych
Główną
i zasadniczą rolą warstwy łącza danych jest zapewnienie wyższym warstwom
dostępu do medium transmisyjnego. Dane przemieszczające się w dół stosu podczas
przechodzenia przez warstwy muszą w pewnym momencie zostać dostarczone do nośnika
danych, przez który docierają do miejsca docelowego, hosta odbiorczego. Jest to
podstawowa funkcja warstwy łącza danych: przechowuje dane z wyższych warstw na
nośniku.
Warstwa sieciowa omówiona w poprzednim odcinku tego kursu obejmowała segmenty z adresami IP otrzymanymi z warstwy transportowej podczas procesu enkapsulacji w celu tworzenia pakietów. Pakiety te docierają do warstwy łącza danych przed wysłaniem do hosta docelowego, a następnie przechodzą przez warstwę łącza danych do medium transmisyjnego. Wcześniej jednak pakiety otrzymywały dalsze informacje kontrolne. Tym razem będzie to fizyczny adres urządzenia, 48-bitowy adres MAC.
Pakiety stają się wtedy ramkami i to właśnie te ramki trafiają do nośnika w celu dalszej transmisji do hosta docelowego. Adres MAC jest przypisywany podczas produkcji karty i przechowywany w pamięci ROM. ROM jest tylko do odczytu, więc nie ma możliwości zmiany przypisanych adresów na poziomie karty i na poziomie sprzętu. Jednak takie adresy można zmienić na poziomie systemu urządzenia, na przykład w systemie operacyjnym. Czasami administratorzy wprowadzają takie zmiany na poziomie systemu, np. gdy nie chcą rekonfigurować sprzętu sieciowego, np. gdy w sieci pojawia się nowy komputer.
Sama warstwa łącza danych jest pośrednikiem między medium transmisyjnym, a oprogramowaniem sieciowym. W przypadku urządzeń końcowych, tj. komputerów, serwerów czy telefonów, jest to jedyna warstwa zaimplementowana nie tylko w domenie programowej, ale również sprzętowej. Fizycznym odzwierciedleniem warstwy łącza danych jest karta sieciowa zainstalowana w naszym komputerze. Karty te stanowią interfejs między oprogramowaniem sieciowym a medium transmisyjnym. Ponieważ warstwa łącza danych działa na dwóch poziomach, na poziomie sprzętu i oprogramowania, jej funkcje i zadania są również podzielone na dwie mniejsze podwarstwy:
· LLC (Kontrola łączy logicznych),
· MAC (kontrola dostępu do mediów).
Podwarstwa LLC ramkuje informacje o używanym protokole warstwy sieciowej, dzięki czemu różne protokoły warstwy sieci, takie jak IPv4, IPv6 lub IPX, mogą korzystać z tego samego medium transmisyjnego i karty sieciowej, a jej funkcje w komputerze są wykonywane przez sterownik karty sieciowej. Z drugiej strony podwarstwa MAC określa zasady dostępu do medium i wykonuje funkcje adresowania.
Podsumowując – warstwa łącza danych:
· odbiera dane z warstwy sieciowej,
· tworzy ramki, które można przesyłać za pośrednictwem medium,
· podaje fizyczny adres ramki,
· odpowiada za kontrolę dostępu do medium.
Warstwa ta jest implementowana na urządzeniach końcowych takich jak komputery, ale także na routerach i switchach.
Ramka warstwy łącza danych i komunikacja
Istnieje wiele rozwiązań i wiele standardów sieciowych do implementacji funkcjonalności warstwy drugiej. Mamy standardy Ethernet, mamy sieci bezprzewodowe, w końcu mamy wiele protokołów sieciowych działających w sieciach WAN, takich jak Frame Relay. Nie ma więc czegoś takiego jak uniwersalna ramka. Każdy standard sieciowy ma własną strukturę, specyficzną dla konkretnego rozwiązania. Podsumowując temat, możemy założyć, że typowy framework drugiego poziomu składa się z 3 głównych części:
Nagłówek |
Dane |
Stopka |
adresy MAC |
pakiety warstwy |
sygnał końca ramki |
Prześledźmy teraz proces komunikacji między urządzeniami, skupiając się na
funkcjach warstwy łącza danych. Załóżmy, że nasz komputer wysyła żądanie do
serwera WWW w sieci zdalnej.
Dane do wysłania takiego zapytania są już enkapsulowane w jeden pakiet z numerem portu aplikacji i adresem logicznym, czyli adresem IP komputera i serwera.
Zanim pakiet wejdzie do medium transmisyjnego, warstwa łącza danych musi skonstruować ramkę z odpowiednimi adresami MAC nadawcy i odbiorcy ramki. W przypadku adresu MAC nadawcy rzecz jest oczywista, to tylko adres MAC komputera, ale co z adresem hosta docelowego? Jeśli komputer i serwer WWW nie znajdują się w tej samej sieci i nie można ustalić adresu MAC jego karty sieciowej, jest to technicznie niewykonalne. Czemu? Ponieważ adresy MAC są używane tylko do komunikacji w danej sieci i nigdy poza jej obszarem. Dlatego w polu ramki zawierającej docelowy adres MAC zostanie zapisany adres MAC interfejsu routera, do którego podłączony jest komputer.
Ramka jest wysyłana przez medium transmisyjne do pierwszego routera. Ten ostatni po odebraniu ramki dekapsuluje ją tak, aby mógł odczytać adres IP urządzenia, do którego zmierza pakiet. Adresy IP nie mogą być odczytywane bezpośrednio z ramek warstwy drugiej, dlatego wymagana jest dekapsulacja. Po odczytaniu adresu IP z pakietu (dane po dekapsulacji ramki stają się ponownie pakietem), porówna go z wpisem w tablicy routingu i znajdzie informację, że sieć serwerów jest trasowana przez kolejny router.
Następnie utworzy nową ramkę, w której adresem źródłowym będzie adres MAC interfejsu, który łączy z drugim routerem, oraz docelowy adres MAC tego routera.
Ramka następnie przechodzi przez nośnik do drugiego routera, który ponownie hermetyzuje ramkę w celu odczytania adresu IP z pakietu. Stwierdza, że odbiorcą danych jest urządzenie pracujące w jego sieci, bezpośrednio z nią połączone, więc proces enkapsulacji wykonywany przez drugi router odbywa się ponownie, tym razem w polu adresu MAC wpisuje swój adres jako źródłowy, a adres MAC serwera adresowego jest używany jako adres docelowy.
Tak przygotowane ramki trafiają na serwer, który również je dekapsuluje. Tym razem jednak jest to urządzenie, na które wskazują dane, więc dekapsuluje je całkowicie, czyli dodatkowo odczytuje numer portu aplikacji w celu przesłania danych do odpowiedniej konkretnej aplikacji, w tym przypadku serwisu WWW.
Następnie usługa sieciowa przygotowuje dane odpowiedzi. Dane trafiają najpierw do warstwy transportowej, gdzie nadawany jest numer portu aplikacji, następnie do warstwy sieciowej, tworząc pakiet z odpowiednim adresem IP, a na końcu do warstwy łącza danych, gdzie z pakietu przygotowywana jest ramka, zaznaczona z adresami MAC serwera i routera dla podłączonego serwera.
Odpowiedź jest następnie przekazywana do mediów i wysyłana do klienta. Podczas tego procesu przechodzi przez dwa routery, które wykonują proces dekapsulacji i rekapsulacji, ponieważ muszą one odczytać adres IP. Na koniec procesu odpowiedź trafia do klienta. Spowoduje to rozpakowanie danych, umożliwiając przeglądarce wyświetlenie strony internetowej.