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\*. * `Przydział adresów MAC `_ * `Zajęte adresy MAC `_ * Adres rozgłoszeniowy: ``ff:ff:ff:ff:ff:ff`` * Adresy multicast: najmłodszy bit najstarszego oktetu ustawiony na ``1`` 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. .. image:: _static/hub.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. .. image:: _static/switch.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). .. image:: _static/domains.png :scale: 50% *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 :math:`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`` Zadania ------- * http://www.cs.put.poznan.pl/mlibuda/urzadzenia.pdf * http://www.cs.put.poznan.pl/mlibuda/ARP.pdf