Warstwa Łącza Danych

Warstwa (2) pozwala wysyłać dane po warstwie fizycznej, do konkretnych urządzeń połączonych bezpośrednio w sieci (ten sam segment sieci, w zasięg).

Adresy warstwy są płaskie: nie pozwalają na identyfikacje miejsca komputera w sieci (przydziału do logicznej grupy).

Podwarstwy warstwy 2:

  • Sterowanie dostępem do mediów, media access control (MAC)
  • Sterowanie połączeniem logicznym, logical link control (LLC)

Odpowiedzialność LLC

  1. Rozdziela i łączy dane transmitowaną przez warstwę MAC (multiplexing, demultiplexing).

    Na podstawie nagłówka LLC warstwa łącza danych może określić co zrobić z pakietem po otrzymaniu ramki: do którego stosu protokołów należy (np. IP lub IPX w warstwie 3).

  2. Steruje przepływem, wykrywa błędy, retransmituje dane (w zależności od technologii i protokołów).

Odpowiedzialność MAC

  1. Interfejs pomiędzy warstwą fizyczną a LLC.

    Symuluje kanał działający w trybie full-duplex w sieci multi-point (w przeciwieństwie do point-to-point).

  2. Adresacja komputerów w segmencie i przekazywanie informacji adresowych.

  3. Dzielenie na ramki i kontrola poprawności.

  4. Kontrola dostępu do medium transmisji.

Adres MAC

Adres MAC ma postać sześciu par hexadecymalnych cyfr rozdzielonych dwukropkiem (lub myślnikiem): 15:f4:32:01:00:11. Kolejność bitów w adresie jest zgodna z kolejnością transmisji. Adres MAC urządzenia jest z założenia niezmienny* i unikalny*.

Urządzenie odbiera ramki które są przeznaczone dla jego adresu MAC, na adres rozgłoszeniowy, lub na adres multicast w którym się zawiera. Karta sieciowa w trybie promiscuous odbiera ramki kierowane do wszystkich adresów MAC.

Zarządzanie warstwą łącza danych

W Linuksie do zarządzania warstwą łącza danych (data link layer) służy komenda ip link:

  • odczytanie adresu MAC: ip link show, ip link show dev eth0
  • zmiana adresu MAC: ip link set dev eth0 address 12:34:56:78:90:ab

Mierzenie prędkości netperf/iperf:

  • serwer: netserver
  • klient: netperf -H $SERVER_IP_ADDR

Instalacja programów w OpenSUSE Linux: zypper install iperf

Ethernet

  • Standard IEEE 802.3
  • Ethernet obejmuje zarówno warstwę fizyczną jak i łącza danych
  • Ramka Ethernet II

Urządzenia warstwy łącza danych

Oprócz karty sieciowej, dwoma najważniejszymi urządzeniami technologii Ethernet są koncentrator i przełącznik. Urządzenia te umożliwiają łączenie komputerów w sieć.

Koncentrator (hub)

Wieloportowy regenarator sygnału: kieruje ramkę na wszystkie porty.

../_images/hub1.png
  • Sygnał otrzymany na jednym porcie jest przesyłany na pozostałe porty
  • Wzmocnienie sygnału
  • Uszkodzenie kabla nie przerywa pracy sieci

Komputery współdzielą pasmo transmisyjne: możliwe zajście kolizji. Komputery połączone koncentratorem należą do tej samej domeny kolizyjnej.

Kolizje są obsługiane przez protokół CSMA/CD (Carrier Sense Multiple Access with Collision Detection):

  • transmisja jest zamykana po wykryciu kolizji,
  • wysyłany jest jam signal,
  • następuje retransmisja po czasie (losowy, zależny od liczby kolizji).

Przełącznik (switch)

Przełącznik kieruje ramkę do właściwego portu.

../_images/switch1.png
  • Dedykowane pasmo transmisyjne między dowolnymi dwoma urządzeniami (mikrosegmentacja)

Przełącznik uczy który port prowadzi do którego adresu MAC, dzięki czemu może kierować ramki do właściwych portów. Nauczanie skojarzeń następuje algorytmem Transparent Bridging (lub Backward Learning).

Switch ma tablicę par adres MAC–port w której zapamiętuje adresy źródłowe wyciągnięte z ramek. Jeśli docelowy adres MAC nie jest zapisany, ramka jest wysyłana na wszystkie porty (oprócz źródłowego) pod adres rozgłoszeniowy (ff-ff-ff-ff-ff-ff). Przestarzałe adresy są usuwane.

Urządzenia połączone switchem są w jednej domenie rozgłoszeniowej, ponieważ wiadomość wysłana pod adres rozgłoszeniowy MAC trafi do każdego z nich. Natomiast switch separuje domeny kolizyjne, ponieważ switch nie stanowi jednego segmentu sieci (jednego pasma transmisyjnego) i nie zachodzą na nim kolizje.

(Separacja domen rozgłoszeniowych występuje na routerze, urządzeniu warstwy 3).

../_images/domains.png

Address Resolution Protocol (ARP)

Problem:

  • Komunikacja w sieciach IP przesyła pakiety (wiadomości warstwy 3) na podstawie adresu IP.
  • Każdy pakiet jest kapsułkowany w ramkach (wiadomości warstwy 2) które są adresowane za pomocą adresu MAC.
  • Warstwa 2 nie potrafi posługiwać się adresami warstwy 3.
  • Jak wysłać pakiet do właściwego odbiorcy?

Statyczna konfiguracja: tablica połączen

  • Nieskalowalne rozwiązanie
  • Skomplikowana zmiana adresów

Address Resolution Protocol:

  • Dynamiczne odwzorowanie adresów IP w adresy MAC

Protokół

  1. Zapytanie o adres MAC: nadawca rozgłasza w sieci fizycznej pytanie o adres MAC urządzenia o adresie IP X.X.X.X i swoim adresem MAC aa:aa:aa:aa:aa:aa.
  2. Odpowiedź: urządzenie które dostało zapytanie i którego adres IP to X.X.X.X wysyła na aa:aa:aa:aa:aa:aa swój adres MAC bb:bb:bb:bb:bb:bb.
  3. (Optymalizacja) nadawca zapisuje w prywatnej tablicy APR-cache odzworowanie X.X.X.X do bb:bb:bb:bb:bb:bb. Wpisy w ARP-cache są tymczasowe.

Ponieważ protokół ARP pośredniczy między warstwami łącza danych (2) i sieciową (3), niektórzy autorzy, chcąc trafnie określić jego miejsce w architekturze sieci, nazywają go protokołem warstwy \(2 \frac{1}{2}\).

Odmiany ARP

W okresie, kiedy część sieci stanowiły stacje bez własnej pamięci, niezdolne do zapamiętania swoich adresów IP, odwzorowania odwrotnego (adresu MAC w adres IP) dokonywał protokół RARP (Reverse ARP). Obecnie RARP wyszedł z użycia.

Proxy ARP stosowany jest tam, gdzie w pewnych stacjach nie konfiguruje się domyślnej bramy. Na zapytania o adres MAC dotyczące komputerów z innej sieci ruter z funkcją proxy ARP odpowiada własnym adresem MAC (dokładniej, adresem MAC interfejsu znajdującego się w tej sieci, z której pochodzi zapytanie) i tym samym z własnej inicjatywy pełni rolę podobną do roli domyślnej bramy.

Narzędzia

Manipulacja ARP-cache:

  • wyświetl zawartość:
    • arp
    • ip neigh show lub ip neigh
  • usuń wpis:
    • arp -i eth0 -d 192.168.0.1
    • ip neigh del 192.168.0.1 dev eth0
  • dodaj wpis:
    • arp -i eth0 -s 192.168.0.1 12:34:56:78:90:ab
    • ip neigh add 192.168.0.1 lladdr 12:34:56:78:90:ab dev eth0
  • usuń wszystkie wpisy:
    • ip neigh flush
  • częstotliwość odświeżania ARP-cache:
    • cat /proc/sys/net/ipv4/neigh/eth0/gc_stale_time

Wysłanie zapytania ARP do określonego urządzenia:

  • arping -I eth0 192.160.0.1

Ankieta