ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
  • Firma

Jak działa protokół ARP

Napisane przez Igor Brzeżek on 29 października 2025
Napisane w: Protokół ARP.

Adresacja sprzętowa Ethernet
Karty sieciowe Ethernet posiadają wbudowane w ROM, niepowtarzalne adresy sprzętowe inaczej mówiąc adresy MAC. Poniżej budowa:

Bardzo ważne informacje zawarte są w dwóch najmłodszych bitach najstarszego oktetu.

Ogólna zasada działania protokołu ARP
Jest to protokół pozyskania adresu MAC zdalnego hosta, którego adres IP jest znany.
Protokół ARP działa tyko w ramach jednego segmentu czyli nie jest „routowalny” inaczej mówiąc działa do granicy sieci, którą wyznacza router.

Działanie ARP w jednym segmencie czyli komunikacja bezpośrednia

Host PC1 chce komunikacji z hostem PC2. Zatem musi zbudować ramkę Ethernet. Wcześniej jednak sprawdza czy host docelowy (po adresie IP) znajduje się w jego sieci czy w innej aby zdecydować czy komunikować się bezpośrednio z hostem docelowym czy z domyślna bramą (o czym w dalszej części). Proces ten jest opisany w innym artykule. W tej sekcji wszystkie hosty znajdują się w tym samym segmencie i w tej samej (pod)sieci IP.

Problem w tym, że protokół Ethernet nie wie co to jest adres IP. Jak zatem zaadresować taką ramkę? Adresacja Ethernet odbywa się za pomocą adresów sprzętowych MAC. Trzeba teraz jakoś adres MAC urządzenia docelowego pozyskać. W tym celu stworzono protokół ARP.

Ogólna budowa ramki Ethernet:

Etap 0
Jak na razie ramka do wysłania na PC1 wygląda tak:

Nie jest znany adres MAC maszyny docelowej.

Etap 1
Host źródłowy wysyła do wszystkich hostów w swoim segmencie (ruch typu broadcast) zapytanie za pomocą protokołu ARP i pakietu ARP Request:
Uwaga wszyscy! Proszę aby host a adresie IP 192.168.0.2 podał mi swój adres MAC.

Schemat ruchu broadcast zapytania ARP:

Etap 2
Host posiadający adres IP 192.168.0.2 odpowiada teraz nadawcy pakietem typu ARP Reply podając swój adres MAC

Schemat ruchu odpowiedzi unicast ARP:

Etap 3
Host nadający zapisuje to odwzorowanie (adres IP PC2 – jego adres MAC) w tablicy ARP i może już przygotować kompletna ramkę z danymi

Od tego momentu każda ramka wysyłana do PC2 jest adresowana z bufora ARP (czerwona linia), adres źródłowy jest zawsze pobierany z pamięci ROM karty sieciowej (chyba, że został programowo zmieniony). Wpisy w buforze mają określny swój czas życia np. 3 minuty calem zachowania ich aktualności.

Podmiana adresu MAC w tablicy ARP
Co się teraz stanie kiedy to tablicy ARP hosta PC1 wprowadzimy błędny czy fałszywy adres MAC hosta np. PC2? Host PC1 w razie komunikacji z PC2 będzie budował ramkę z błędnym adresem MAC docelowym. Taka ramka zostanie wysłana ale nie dojdzie do celu ponieważ dla warstwy L2 on nie istnieje. Przełącznik ramkę odbierze ale nie będzie jej mógł dostarczyć ponieważ host z adresem sprzętowym D nie istnieje.

Schemat do zadania (można wykonać w GNS3 lub PacketTracer):

lub

Mamy tu jeden segment fizyczny. Za pomocą programu WinBox uruchomionego na Linux sprawdzimy czy widać dwa systemy RouterOS i czy możemy się do nich zalogować. Logowanie i zarządzanie przeprowadzimy za pomocą adresacji sprzętowej czyli za pomocą adresów MAC.

– Uruchamiamy maszyny i nadajemy im nazwy (np. Linux, ROS1-1, ROS1-2)
– Na RouterOS i Linux sprawdzimy czy mamy adresy IP (nie powinny być przypisane)

na Windows:– Kolejno sprawdzamy co widnieje w tablicach buforów ARP każdego urządzenia (powinno tam być pusto)
Uwaga: jeśli pod Linux brak polecenia ARP trzeba je doinstalować za pomocą poleceń:
#apt update && apt install net-tools -y

– dla Linuxa: arp -a
– dla RouterOS: /ip/arp/print
– dla Cisco: arp -a

Dla przełącznika:
– show arp
– show mac-address-table
– show hosts

– Ustalamy adresy wszystkich hostów z sieci np: 192.168.0.0/24

dla RouterOS:
#/ip/address/add address=192.168.0.1/24 interface=ether1

dla hostów Cisco (ustal właściwy adres IP, na ilustracji jest przykładowy):

dla Linux:
#ip address add 192.168.0.3/24 dv enp0s3

– Do dowolnego łącza podpinamy sniffer (program Wireshar lub sniffer w Cisco) i włączamy przechwytywanie pakietów

dla Cisco:

– Teraz czas na test połączenia: z jednego komputera „pingujemy” dowolny inny poleceniem

#ping adres_IP

– Sprawdzamy zawartość tablic ARP wszystkich urządzeń – co tam widać? co się w niej pojawiło?
– Jakiego hosta jest to adres?
– Jaki zatem jest cel i przeznaczenie protokołu ARP jak i tablic (buforów) ARP
– Zatrzymujemy przechwytywanie pakietów, ustalamy filtr ARP i przeglądamy wpisy
– Jak działa ARP i jakie informacje przenosi?
– Patrząc z perspektywy hosta na którym wydano polecenie ping jaki adres MAC posiada cel?
— W jakiej sieci on się znajduje?
— Jaki jest rodzaj komunikacji? Bezpośredni? Pośredni przez jakieś urządzenie?

Działanie ARP między dwoma segmentami
W przypadku kilku segmentów oddzielonych routerem sprawa wygląda inaczej. Nie ma tutaj bezpośredniej komunikacji (w warstwie L2) między hostami PC1 a PC2 czy PC3. Cały ruch przechodzi przez router, który także posiada interfejsy sieciowe z adresami MAC (jeśli są to interfejsy Ethernet).

Jeśli teraz host PC1 chce nawiązać komunikację z hostem PC3 to tak jak w poprzedni przypadku musi zbudować ramkę Ethernet i pozyskać adres MAC hosta docelowego. Jednak w tym wypadku sprawa wygląda inaczej: po drodze jest Router ze swoim interfejsem Ethernet. Router ten (dla hostów) pełni funkcję między innymi bramy (a raczej domyślnej bramy). To właśnie do niej teraz host PC1 musi wysłać ruch celem dotarcia do hosta PC3. Wynika to z prostej zasady routingu. Zatem w tym wypadku host źródłowy najpierw sprawdza czy adres IP docelowy znajduje się w jego sieci IP. Jeśli tak to zapytanie ARP wysłane jest bezpośrednio do sieci do której host jest podłączony (jak w pierwszej części tego artykułu). Jeśli jednak host docelowy (patrząc na jego adres IP) znajduje się w innej sieci to taki ruch będzie skierowany do domyślnej bramy (host PC1 musi ją mieć skonfigurowaną w ustawianiach IP). Zatem host źródłowy musi zbudować ramkę zapytania ARP o adres sprzętowy bramy a nie hosta docelowego! Adres bramy jest w konfiguracji hosta PC1 więc zapytanie wygląda tak:

Router za pomocą protokołu ARP odpowiada swoim adresem MAC (interfejsu D) a host PC1 wpisuje to odwzorowanie do swojej tablicy ARP. W tym wypadku adres hosta PC2 nigdy się w tejże tablicy nie pojawi.

Po takiej akcji w tablicy ARP hosta PC1 pojawia się nowy wpis:

Schemat do zadania
dla GNS3

lub dla Cisco PacketTracer

– Przeładujemy wszystkie urządzenia aby wyczyścić bufory
– Ustalamy adresy IP dla interfejsów routera zgodnie ze schematem

dla RouterOS:

dla Cisco – hosty jak pokazano wcześniej, dla Routera:

Uwaga: konfigurując interfejs routera oprócz adresacji IP trzeba go włączyć, co pokazano czerwoną strzałką na poniższej ilustracji.

dla Linux:
#ip address add 192.168.2.1/24 dev enp0s3

– Ponieważ teraz nasze hosty znajdują się w różnych sieciach nie mogą się już komunikować bezpośrednio, wymagany jest do takiej komunikacji router zwany też bramą, trzeba go zatem odpowiednio ująć w konfiguracji (tylko hostów!)

dla RooterOS ROS1-1
#/ip/route/add gateway=192.168.0.1

dla RooterOS ROS1-2
#/ip/route/add gateway=192.168.1.1

dla Linux:
#ip route add default via 192.168.2.1 dev enp0s3

dla Cisco (host):

Uwaga: jeśli host jest podłączony do jednego routera to nazywamy tenże router bramą domyślną, co też widać w oknach konfiguracyjnych hostów. Router łączy trze sieci podłączone do niego bezpośrednio i w naszym przypadku bramy nie wymaga.

– Teraz „pingujemy” hosty znajdujące się w różnych sieciach np: PC4 –> PC2, ROS1-1 –> ROS1-2
– Ponownie sprawdzamy zawartość tablic ARP obu hostów a konkretnie:
— sprawdzamy jaki adres MAC posiada karta sieciowa np. PC2
— sprawdzamy co widać w buforze ARP hosta PC4
– Czy w tym buforze znajduje się adres MAC hosta docelowego PC2 czy inny adres? Jak można to wytłumaczyć?
– Co to za adres, jakiego urządzenia? Z jakiego powodu?
– Co teraz widać w tablicy ARP? Co się w niej pojawiło? Jakiego hosta jest to adres? Czy to jest adres zdalnego hosta, który był pingowany?
– Wnioski?

W tym przypadku komunikacja wymaga urządzenia pośredniego warstwy L3 czyli routera. Protokół ARP nie jest trasowalny czyli pracuje tylko w jednym segmencie zatem w tabelach ARP nie widzimy adresów hostów znajdujących się za routerem a jedynie adres MAC bramy do nich prowadzącej. Wynika to z tego, że „po drugiej stronie” routera może pracować sieć nie posiadająca takiej struktury adresów MAC jak sieć Ethernet. Czyni to sieci LAN/WAN bardzo elastycznymi.

Nawigacja

← Analiza ruchu między warstwami L2 i L3
Ruch ramki Ethernet z perspektywy adresów MAC →
  • Szukaj

  • Kategorie

    • IT ogólnie (98)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Sieci (25)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (3)
        • Symulator sieci GNS3 (2)
      • Software (41)
        • Programowanie (3)
        • Systemy operacyjne (15)
          • Linux Debian (14)
        • Windows (7)
      • WiFi (2)
      • Wirtualizacja (26)
    • Różne (1)
  • Ostatnie wpisy

    • Ruch ramki Ethernet z perspektywy adresów MAC
    • Jak działa protokół ARP
    • Analiza ruchu między warstwami L2 i L3
    • Cisco i adresacja IP na kartach wieloportowych
    • Ochrona portów Cisco i MikroTik
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y