poniedziałek , 9 września 2024

Omówienie warstwy łącza danych w modelu ISO/OSI

Rola warstwy łącza danych

Warstwa łącza danych to druga warstwa modelu OSI, odpowiedzialna za przygotowanie danych do transmisji przez warstwę fizyczną. Jej główne funkcje to:
● Enkapsulacja: Umieszczanie pakietów z warstwy sieciowej w ramki.
● Kontrola dostępu do medium: Zarządzanie dostępem wielu urządzeń do wspólnego medium transmisyjnego.
● Wykrywanie błędów: Zapewnienie integralności danych poprzez wykrywanie i ewentualnie korekcję błędów transmisji.

Podwarstwy LLC i MAC

Warstwa łącza danych dzieli się na dwie podwarstwy:
● LLC (Logical Link Control): Odpowiedzialna za identyfikację protokołu warstwy sieciowej użytego w pakiecie (np. IPv4, IPv6).
● MAC (Media Access Control): Zarządza dostępem do medium transmisyjnego i enkapsuluje pakiety w ramki.

Rola adresu MAC

Adres MAC to unikalny w skali światowej, 48-bitowy adres fizyczny karty sieciowej przechowywany w pamięci ROM. Składa się z dwóch części:
● OUI (Organizationally Unique Identifier): Identyfikuje producenta karty (pierwsze 24 bity).
● Unikalny numer seryjny: Przypisany przez producenta (ostatnie 24 bity).

Adres MAC może być zapisany na różne sposoby (dwukropki, myślniki, kropki), np. 00:5E:B7:C4:15:3A, 00-5E-B7-C4-15-3A lub 005E.B7C4.153A. Adres MAC niektórych kart sieciowych można tymczasowo zmienić programowo, ale zmiana ta jest resetowana po ponownym uruchomieniu urządzenia. Można to wykorzystać do omijania filtrów adresów MAC.

Tryby dupleksu

Pełny dupleks: Jednoczesne wysyłanie i odbieranie danych (Ethernet z przełącznikiem).
Pół-dupleks: Wysyłanie lub odbieranie danych przez jedno urządzenie na raz (starsze sieci Ethernet z koncentratorem, Wi-Fi).

Większość kart sieciowych i przełączników wykorzystuje proces automatycznego ustalania optymalnego trybu dupleksu i prędkości transmisji między urządzeniami. Typowe karty sieciowe obsługują takie prędkości jak 10 Mb/s, 100 Mb/s i 1 Gb/s oraz obydwa tryby dupleksu. Bardziej specjalistyczne karty mogą pochwalić się obsługiwaniem takich prędkości jak 40 Gb/s.

Niezgodność dupleksów pomiędzy hostami będzie powodować kolizje, ponieważ gdy przykładowo jedno urządzenie będzie transmitować w pełnym dupleksie, a drugie tylko w pół-dupleksie, to ten drugi host nie będzie nadążać za odbieraniem i przesyłaniem ramek na łączach 10 Mb/s i 100 Mb/s. Standardy GigabitEthernet i wyższe pracują tylko w pełnym dupleksie.

Kontrola dostępu do medium

CSMA to rodzina protokołów kontroli dostępu do medium, umożliwiająca współdzielenie medium transmisyjnego przez wiele urządzeń. Obecne sieci Ethernet, które z wykorzystaniem przełącznika pracują w trybie pełnego dupleksu nie potrzebują CSMA, jednak starsze pół-dupleksowe sieci Ethernet wykorzystujące huba oraz sieci Wi-Fi, które domyślnie pracują w pół-dupleksie korzystają z tych protokołów.

Metoda CSMA/CD polega na detekcji kolizji, używana jest w pół-dupleksowych sieciach Ethernet i wygląda następująco:

  1. Nasłuchiwanie medium: Urządzenie nasłuchuje medium transmisyjne, aby sprawdzić, czy jest ono wolne.
  2. Transmisja: Jeśli medium jest wolne, urządzenie rozpoczyna transmisję ramki.
  3. Wykrywanie kolizji: Podczas transmisji urządzenie nadal nasłuchuje. Jeśli wykryje kolizję, przerywa transmisję i wysyła specjalny sygnał zakłócający, informujący inne urządzenia o kolizji.
  4. Losowe opóźnienie: Po kolizji urządzenie odczekuje losowy czas, a następnie ponownie próbuje transmitować ramkę.

Metoda CSMA/CA polega na unikaniu kolizji, używana jest w sieciach Wi-Fi i wygląda następująco:

  1. Nasłuchiwanie medium: Urządzenie nasłuchuje medium transmisyjne, aby sprawdzić, czy jest ono wolne.
  2. Wysłanie ramki RTS (Request to Send): Jeśli medium jest wolne, urządzenie wysyła ramkę RTS do punktu dostępowego, informując o chęci transmisji.
  3. Odbieranie ramki CTS (Clear to Send): Punkt dostępowy odpowiada ramką CTS, dając urządzeniu pozwolenie na transmisję.
  4. Transmisja: Urządzenie rozpoczyna transmisję ramki.
  5. Potwierdzenie: Po zakończeniu transmisji odbiorca wysyła komunikatu ACK potwierdzając odebranie ramki.

Budowa ramki

Budowa ramki różni się w zależności od środowiska (np. Ethernet, Wi-Fi), ale zazwyczaj zawiera następujące elementy:
Nagłówek: Zawiera adresy MAC hosta źródłowego i docelowego oraz bity sygnalizujące początek ramki.
Dane: Zawiera pakiet z warstwy sieciowej, w którym transportowane są właściwe dane.
Stopka: Zawiera sumę kontrolną pozwalającą na sprawdzenie błędów oraz bity sygnalizujące koniec ramki.

Uwaga: Minimalny rozmiar ramki to 64 bajty, a maksymalny 1518 bajtów. Ramki zbyt małe są uzupełniane dodatkowymi bitami, a zbyt duże są odrzucane.

Wyjaśnienie wszystkich elementów ramki Ethernet:
Preambuła: Służy do powiadomienia hosta docelowego, aby przygotował się do odebrania ramki.
SFD: Służy do sygnalizacji początku ramki.
Docelowy MAC: Służy do określenia adresu MAC hosta docelowego.
Źródłowy MAC: Służy do określenia adresu MAC hosta źródłowego.
Typ/Długość: Służy do zidentyfikowania protokołu z warstwy sieciowej i zapisania go szesnastkowo (dla IPv4 0x800, dla IPv6 0x86DD). Starsze sieci Ethernet zamiast typu protokołu używały długości ramki.
Dane: Służy do przechowywania pakietu z warstwy sieciowej.
FCS: Służy do przechowywania pola sumy kontrolnej.
EFD: Służy do sygnalizacji końca ramki.

Wyjaśnienie działania pola sumy kontrolnej:

  1. Tworzenie ramki: Host źródłowy stosuje algorytm CRC do obliczenia logicznego podsumowania całej ramki i umieszcza wynik obliczeń w polu FCS.
  2. Porównanie FCS: Host docelowy po odebraniu ramki również oblicza wartość FCS używając algorytmu CRC i następnie porównuje swój wynik z wynikiem w ramce Ethernet.
    a) Jeśli wartości są zgodne: Ramka nie została uszkodzona podczas transmisji.
    b) Jeśli wartości nie są zgodne: Ramka została uszkodzona, jest odrzucana i ponownie transmitowana przez hosta źródłowego.

Transmisja ramek

Host źródłowy może wysyłać ramki na trzy różne sposoby:
Unicast: Ramka wysyłana jest tylko do jednego urządzenia.
Multicast: Ramka wysyłana jest do grupy urządzeń.
Broadcast: Ramka wysyłana jest do wszystkich urządzeń.

Rodzaje transmisji wpływają na pola źródłowego i docelowego adresu MAC w nagłówku ramki w następujący sposób:
● Adres MAC hosta źródłowego zawsze będzie adresem typu unicast, ponieważ transmisja będzie zaczynać się zawsze od jednego hosta.
● Adres MAC hosta docelowego w przypadku multicast jest zależny od adresu IP grupy multicastowej, jednak zawsze rozpoczyna się od 01:00:5E.
● Adres MAC hosta docelowego w przypadku broadcast zawsze ma postać FF-FF-FF-FF-FF-FF-FF-FF-FF-FF.

Jeśli w sieci znajdował by się więcej niż jeden przełącznik, to podczas wysyłania ramek broadcast musiałaby one przechodzić przez każdy port każdego przełącznika, co spowodowałoby pętlę broadcastową i tym samym paraliż całej sieci. Aby zapobiec temu problemowi, stosuje się protokół STP, który wybiera jedną ścieżkę między przełącznikami i blokuje pozostałe.

Gdy host odbiera ramkę to przed jej przetworzeniem sprawdza czy docelowy adres MAC w nagłówku ramki zgadza się z jego adresem MAC. Jeśli tak jest, to ramka jest przeznaczona dla niego i może rozpocząć proces jej przetwarzania, czyli dekapsulacji jednostki PDU przechodząc w górę warstw modelu OSI. Natomiast jeśli adresy się nie zgadzają, to host po prostu zignoruje taką ramkę.

Rola przełącznika i tablica MAC

Przełącznik to urządzenie należące do warstwy łącza danych i jest nowszą wersją koncentratora, ponieważ wysyła ramkę tylko na port, do którego podłączony jest host docelowy wykorzystując tablicę MAC.

Tablica adresów MAC przechowuje następujące wpisy:
Porty: Numery portów, do których podłączone są poszczególne hosty.
Adresy: Adresy MAC przypisane hostów podłączonych pod dany port.

Wpisy w tablicy MAC znajdują się w niej zwykłe przez 5 minut zanim zostaną usunięte. Wynika to z głównie jednej kwestii:

  1. Topologia sieci może się zmieniać i przełącznik będzie musiał jakoś aktualizować wpisy.

Schemat uczenia się portów i adresów MAC:

  1. Przełącznik dodaje te informacje do swojej tablicy na podstawie przesyłanych ramek.
  2. Jeśli połączymy przełącznik z przełącznikiem, to one automatycznie wzajemnie dodadzą sobie wpisy o swoich portach i adresach MAC, komunikacja nie musi być inicjowana po żadnej stronie.

Proces uczenia się adresów MAC:

  1. Gdy przełącznik odbierze ramkę, sprawdza czy ma w swojej tablicy wpis dla hosta źródłowego.
    a) Jeśli tak, to przechodzi do kolejnego etapu.
    b) Jeśli nie, to dodaje go na podstawie otrzymanych informacji (port, z którego odebrał ramkę oraz źródłowy adres MAC w nagłówku ramki).
  2. Następnie sprawdzi czy ma wpis dla adresu MAC hosta docelowego.
    a) Jeśli tak, to wysyła ramkę na odpowiedni port.
    b) Jeśli nie, to wysyła ramkę broadcast, aby odnaleźć hosta docelowego. Po otrzymaniu informacji zwrotnej, dodaje nowy wpis do tablicy i przesyła ramkę na odpowiedzi port.

Co się dzieje, gdy przełącznik odbiera ramkę, ale numer portu hosta źródłowego lub docelowego się nie zgadza?

  1. Jeśli przełącznik ma już wpis w tablicy MAC dla adresu MAC źródłowego ramki, ale wpis ten wskazuje na inny port niż ten, z którego ramka została odebrana, przełącznik po prostu aktualizuje ten wpis.
  2. Jeśli przełącznik ma wpis w tablicy MAC dla adresu MAC docelowego, ale wpis ten jest nieaktualny (np. host zmienił port lub został odłączony), przełącznik początkowo wyśle ramkę na port wskazany w starym wpisie. Ponieważ ramka nie dotrze do właściwego odbiorcy, zostanie odrzucona. Przełącznik, nie otrzymując potwierdzenia dostarczenia ramki, rozpocznie proces uczenia się i roześle kopię ramki na wszystkie porty (oprócz portu wejściowego), aby odnaleźć nowy port, do którego podłączony jest host docelowy.

Co się dzieje, gdy wysyłana jest ramka broadcast i w sieci jest więcej niż jeden przełącznik?

  1. Każdy przełącznik, który odbierze ramkę broadcast, sprawdzi, czy ma w swojej tablicy MAC wpis dla adresu MAC źródłowego.
    a) Jeśli nie ma, doda nowy wpis na podstawie portu, z którego odebrał ramkę. Gdy host docelowy odbierze ramkę broadcast, odpowie ramką unicast, która będzie zawierała jego adres MAC. Ta ramka unicast będzie przekazywana przez przełączniki w sieci, a każdy z nich doda do swojej tablicy MAC wpis dla adresu MAC hosta docelowego, ucząc się w ten sposób jego lokalizacji w sieci.

Przekazywanie ramek w przełączniku

Przełącznik przekazuje ramki za pomocą jednej z dwóch metod:
Store-and-forward: Odbiera całą ramkę i dodatkowo oblicza CRC, które porównuje z polem sumy kontrolnej w ramce.
Cut-through: Przekazuje ramkę zanim zostanie odebrana w całości sprawdzając tylko docelowy adres MAC.

Metoda Store-and-forward zapewnia, że ramka zostanie przesłana bez błędów, a jeśli takie wystąpią – zostanie odrzucona i host źródłowy podejmie kolejną próbę wysłania. Ponadto jeśli w sieci będziemy chcieli wykorzystać jakość usług (QoS) to na przełącznikach obowiązkowo będzie trzeba ustawić właśnie tą metodę.

Metoda Cut-through jest szybsza, ponieważ przełącznik buforuje część ramki, aby odczytać tylko docelowy adres MAC. Istnieje jednak ryzyko, że ramka zostanie przesłana z błędami i oczywiście host docelowy wykryje taki błąd poprzez analizę sumy kontrolnej, jednak równie dobrze mógł to zrobić przełącznik i tylko niepotrzebnie zostanie wykorzystane pasmo sieci.

Odmiany metody Cut-through:

Fast-forward: Najszybsza metoda przekazywania ramek, ponieważ podobnie jak w cut-through analizowany jest tylko docelowy MAC, ale dodatkowo fast-forward nie czeka na przetworzenie pakietu IP, który znajduje się w ramce, więc istnieje ryzyko wystąpienia błędów z przesyłanymi danymi, co zdarza się rzadko.
Fragment-free: Kompromis pomiędzy wydajnością i integralnością, ponieważ sprawdzane są tylko pierwsze 64 bajty ramki, na których najczęściej występują błędy transmisji.

Niektóre przełączniki mogą być skonfigurowane taki sposób, że będą wykorzystywać szybszą metodę, np. cut-through do momentu osiągnięcia limitu błędów ustalonego przez użytkownika. Gdy to się stanie, to switch automatycznie przełączy się w bezpieczniejszą metodę przekazywania ramek, np. Store-and-forward.

Buforowanie ramek w przełączniku

Przełącznik wykorzystuje buforowanie przed przekazaniem ramki lub z powodu obciążenia sieci. Istnieją dwie metody buforowania pamięci:
Pamięć dedykowana: Każdy port ma swoją własną pamięć buforową.
Pamięć współdzielona: Każdy port korzysta ze wspólnej pamięci buforowej.

Działanie dedykowanej pamięci buforowej:

  1. Pamięć dedykowana działa na zasadzie kolejki FIFO, czyli ramki w buforze przesyłane są zgodnie z kolejnością w jakiej trafiły do przełącznika.
  2. Po odebraniu ramki, przełącznik może umieścić ją w buforze portu wejściowego, z którego ją odebrał.
    a) Jeśli ramka nie jest pierwsza w kolejce, to mimo, że jest gotowa do przesłania, będzie musiała poczekać na swoją kolej.
    b) Jeśli port jest zajęty (np. inna ramka przez niego przepływa) to będzie generować to opóźnienie zarówno dla ramki, która jest gotowa oraz dla innych znajdujących się na dalszych miejscach w kolejce.

Działanie współdzielonej pamięci buforowej:

  1. Pamięć współdzielona działa na zasadzie dynamicznego przydziału, czyli ramki w buforze są przechowywane we wspólnej puli pamięci, a ilość pamięci buforowej wymaganej przez port jest dynamicznie przydzielana. Daje to możliwość przechowywania większych ramek niż jest to w przypadku dedykowanej pamięci.
  2. Po odebraniu ramki, przełącznik umieszcza ją we współdzielonym buforze.
    a) Jeśli port docelowy jest wolny, to rozpoczyna przesyłanie ramki.
    b) Jeśli port docelowy jest zajęty, to ramka będzie czekać we współdzielonym buforze na zwolnienie portu docelowego.

Porównanie obu rodzajów pamięci:

  1. Przełączniki ze współdzieloną pamięcią buforową są zazwyczaj droższe niż te z pamięcią dedykowaną oraz wydajniejsze, ponieważ nie działają na zasadzie kolejki.
  2. Przy bardzo dużym obciążeniu sieci, dedykowana pamięć buforowa może zapewnić lepszą wydajność, ponieważ każdy port ma gwarantowany dostęp do określonej ilości pamięci.

About Klovy

Założyciel serwisu klovy.pl. Moje zainteresowania to: informatyka, słuchanie muzyki (najbardziej typu: Disco Polo, Dance, Pop itp.), czy również sporty (zarówno letnie jak i zimowe). Lubię także pomagać wielu osobom, szczególnie w branży IT, stąd zamysł o platformie Klovy.

Check Also

Jak Cloudflare wpływa na transfer danych na serwerze?

Cloudflare to popularna usługa CDN (Content Delivery Network) i zabezpieczeń internetowych, która wpływa na wiele …

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *