IP

Address Resolution Protocol (ARP)

Mapowanie adresów IP na adresy MAC w sieciach lokalnych.

Dwa adresy w komunikacji lokalnej: rola ARP

Aby wysłać dane przez internet, komputer musi znać docelowy adres IP. Jest to adres logiczny, na podstawie którego routery wybierają trasę przez różne sieci, na przykład z Gdańska do Krakowa. Gdy pakiet dociera do docelowej sieci lokalnej, sama informacja z nagłówka IP nie wystarcza do zbudowania ramki na konkretnym łączu.

Adres IP określa hosta w warstwie internetowej, natomiast ramka Ethernet lub Wi-Fi wymaga adresu warstwy łącza danych. Router może przekazywać pakiet między sieciami, lecz na każdym lokalnym odcinku musi wskazać odbiorcę ramki na podstawie odpowiedniego adresu MAC. ARP dostarcza powiązania potrzebnego do tego lokalnego przekazania.

W sieci lokalnej interfejs może posługiwać się , zwykle 48-bitowym identyfikatorem. Aby urządzenie mogło wysłać dane do innego urządzenia w tej samej sieci lokalnej, musi znać adres MAC odbiorcy. W praktyce rozwiązuje pytanie: „Wiem, że chcę wysłać ten pakiet na adres IP 192.168.1.100, lecz jaki adres MAC należy umieścić w ramce?”

służy do ustalenia adresu MAC odpowiadającego znanemu adresowi IPv4 w lokalnym segmencie. Wynik może zostać zapisany w pamięci podręcznej i wykorzystany przy kolejnych ramkach. W komunikacie ARP znajdują się między innymi typ sprzętu, typ protokołu, długości adresów, kod operacji oraz adresy nadawcy i celu. Żądanie ma zwykle nieznany adres sprzętowy celu, a odpowiedź uzupełnia to pole. W efekcie ten sam format może opisywać różne połączenia warstwy łącza, choć najczęściej spotyka się go w Ethernecie.

Proces ARP: „Kto ma ten IP? Podajcie mi!”

Proces ARP składa się z zapytania i odpowiedzi. Gdy urządzenie źródłowe (Host A) chce wysłać pakiet do urządzenia docelowego (Host B) w tym samym segmencie, najpierw sprawdza zapisane powiązanie, a następnie wykonuje kolejne kroki:

Krok 1: Sprawdź Pamięć Podręczną ARP

Zanim cokolwiek zrobi, Host A sprawdza swoją lokalną pamięć podręczną ARP (cache). Jest to mała, tymczasowa tabela w pamięci, która przechowuje ostatnio rozwiązane mapowania adresów IP na MAC. Jeśli Host A niedawno komunikował się z Hostem B, mapowanie prawdopodobnie wciąż tam będzie, a proces może przejść bezpośrednio do wysyłania danych.

Krok 2: Żądanie ARP (Rozgłoszenie)

Jeśli mapowania dla adresu IP Hosta B nie ma w pamięci podręcznej, Host A tworzy specjalny komunikat zwany Żądaniem ARP. W żądaniu umieszcza docelowy adres IPv4 poszukiwanego hosta oraz własne adresy potrzebne do przygotowania odpowiedzi.

Ten komunikat to . W zwykłym Ethernecie jest wysyłany na specjalny adres MAC (FF:FF:FF:FF:FF:FF), odbierany przez urządzenia w tym segmencie. Żądanie ARP zawiera między innymi adres docelowy IPv4 i adres MAC nadawcy:

„Kto ma adres IP 192.168.1.100? Proszę odpowiedzieć urządzeniu o adresie MAC AA:BB:CC:11:22:33 (mój własny adres MAC).”

Każde urządzenie w sieci lokalnej odbiera i przetwarza to żądanie rozgłoszeniowe.

Hosty analizują pole docelowego adresu protokołu i mogą odrzucić żądania przeznaczone dla innych adresów. Adres nadawcy pozwala odpowiedzi wrócić do inicjatora, a wpis w pamięci podręcznej wiąże adres IPv4 z adresem MAC na konkretnym interfejsie.

Krok 3: Odpowiedź ARP (Unicast)

W zwykłym scenariuszu odpowiada urządzenie, którego adres IPv4 znajduje się w polu docelowym. Pozostałe hosty nie zapisują tego mapowania jako odpowiedzi dla siebie. Urządzenie pośredniczące może odpowiedzieć w imieniu innego hosta, jeśli działa w trybie Proxy ARP.

Host B, rozpoznając swój adres IP 192.168.1.100, utworzy Odpowiedź ARP. Ta odpowiedź to komunikat , zwykle wysłany bezpośrednio na adres MAC Hosta A wskazany w żądaniu. Odpowiedź przekazuje adres MAC związany z żądanym adresem IPv4:

„Ja jestem urządzeniem o adresie IP 192.168.1.100, a mój adres MAC to DD:EE:FF:44:55:66.”

Krok 4: Zaktualizuj Pamięć Podręczną i Wyślij Dane

Host A odbiera Odpowiedź ARP i otrzymuje mapowanie 192.168.1.100 = DD:EE:FF:44:55:66. Dodaje je do pamięci podręcznej ARP zgodnie z zasadami implementacji. Może teraz utworzyć ramkę z właściwym docelowym adresem MAC i wysłać ją do Hosta B w tym segmencie.

Pamięć podręczna ARP i jej aktualizacja

Wysyłanie rozgłoszeniowego Żądania ARP dla każdego pakietu zwiększałoby liczbę ramek w segmencie. Pamięć podręczna ARP przechowuje poznane mapowania i pozwala używać ich przez czas określony przez implementację.

  • Funkcja: Pamięć podręczna przechowuje dynamiczną listę ostatnio poznanych mapowań adresów IP na MAC.
  • Wygaszanie wpisów: Wpisy w pamięci podręcznej nie są trwałe. System może je wygaszać, odświeżać po potwierdzeniu osiągalności albo zastępować po zmianie informacji. Konkretne czasy i stany wpisów zależą od implementacji. Po usunięciu mapowania następna komunikacja wywoła nowe żądanie ARP.
  • Przeglądanie Pamięci Podręcznej: Możesz wyświetlić pamięć podręczną ARP swojego komputera, otwierając wiersz poleceń lub terminal i wpisując polecenie arp -a. Wyświetli to listę znanych adresów IP i odpowiadających im adresów MAC w Twojej sieci lokalnej.

> arp -a

Interfejs: 192.168.1.50 | 0x15

  Adres internetowy    Adres fizyczny       Typ

  192.168.1.1          a0-b1-c2-d3-e4-f5   dynamiczny

  192.168.1.101        dd-ee-ff-44-55-66   dynamiczny

  192.168.1.255        ff-ff-ff-ff-ff-ff    statyczny

Wartości i typ wpisu mają charakter przykładowy i zależą od systemu operacyjnego.

Zasięg Działania ARP: Granica Sieci Lokalnej

ARP działa w obrębie jednego segmentu sieci lokalnej (lub domeny rozgłoszeniowej). Żądanie jest komunikatem lokalnym i zwykły router IPv4 nie przekazuje go do innego interfejsu. Proxy ARP stanowi jawny wyjątek, w którym router odpowiada na wybrane pytania i sam przekazuje później pakiet.

Jak więc wysyłamy dane do innej sieci?

Przy celu spoza podsieci host korzysta z bramy domyślnej. Do lokalnej ramki wpisuje wtedy adres MAC routera, natomiast docelowy adres IP pakietu pozostaje adresem zdalnego serwera. Router odbiera ramkę i wybiera dalszy odcinek trasy.

Gdy Twój komputer (Host A) chce wysłać pakiet do zdalnego celu (jak serwer WWW w internecie), wykonuje następujące kroki:

  1. Sprawdzenie Celu: Komputer porównuje docelowy adres IP z własnym adresem IP i maską podsieci. Szybko ustala, że cel znajduje się w sieci zdalnej.
  2. Celuj w Bramę: Ponieważ cel jest zdalny, komputer wie, że nie może dostarczyć pakietu bezpośrednio. Musi go wysłać do swojej skonfigurowanej (lokalnego routera).
  3. ARP dla Bramy: Teraz komputer inicjuje proces ARP, ale z innym celem. Wysyła rozgłoszeniowe Żądanie ARP, pytając:

    „Kto ma adres IP mojej bramy domyślnej (192.168.1.1)? Proszę, podaj mi swój adres MAC.”

  4. Wyślij do Bramy: Gdy router odpowie swoim adresem MAC, komputer tworzy pakiet danych. Docelowy adres IP pakietu to wciąż adres zdalnego serwera, ale docelowy adres MAC to adres lokalnego routera. Pakiet jest następnie wysyłany do routera, który przejmuje zadanie przekazania go dalej w kierunku ostatecznego celu.

Warianty Protokołu ARP

Oprócz standardowego mechanizmu zapytania i odpowiedzi opisano także historyczne warianty oraz zastosowania ARP związane z pośredniczeniem, wykrywaniem konfliktów i aktualizacją wpisów.

  • Odwrotny ARP (RARP): Historyczny protokół używany przez stacje robocze bez dysku twardego. Urządzenie znało swój adres MAC, ale nie adres IP. Wysyłało żądanie RARP („Mój MAC to X, jaki jest mój IP?”), a serwer RARP w sieci odpowiadał przydzielonym adresem IP. RARP jest już przestarzały i został zastąpiony przez bardziej zaawansowane protokoły, takie jak BOOTP i najczęściej DHCP.
  • Proxy ARP: Router w jednej sieci odpowiada na żądania ARP dotyczące adresów IPv4 osiągalnych przez inny interfejs. Podaje własny adres MAC, a po odebraniu ramki przekazuje pakiet do właściwego celu. Mechanizm może połączyć segmenty bez zmiany adresacji hostów, lecz zwiększa zależność od konfiguracji routera i utrudnia analizę trasy.
  • Bezpłatny ARP (Gratuitous ARP): To komunikat ARP wysyłany bez wcześniejszego żądania. Host może ogłosić własne powiązanie IPv4 z adresem MAC, aby sąsiedzi odświeżyli wpisy. Przy wykrywaniu konfliktu adresu stosuje się procedurę, w której ARP Probe używa adresu nadawcy 0.0.0.0 i bada adres tymczasowy.
    • Wykrywanie Konfliktów IP: Odpowiedź na ARP Probe albo inne oznaki używania badanego adresu sygnalizują konflikt. Samo ogłoszenie własnego adresu nie zastępuje pełnej procedury wykrywania duplikatu.
    • Aktualizacja Pamięci Podręcznej: Po zmianie interfejsu lub przejęciu adresu IP host może rozgłosić nowe powiązanie. Sąsiednie urządzenia mogą wtedy zaktualizować pamięć podręczną, co jest przydatne także w systemach wysokiej dostępności.

ARP a Bezpieczeństwo Sieci

ARP nie uwierzytelnia odpowiedzi, dlatego jest podatny na ARP Spoofing i zatruwanie ARP. Host może przyjąć sfałszowane powiązanie i skierować ramki do nieuprawnionego urządzenia.

Atakujący może wysyłać odpowiedzi przypisujące jego adres MAC adresowi hosta albo bramy. W efekcie część ruchu może trafić przez maszynę atakującego, co umożliwia podsłuch, modyfikację lub blokowanie danych w ataku Man-in-the-Middle (MitM). Stosuje się między innymi statyczne powiązania, ochronę portów, DHCP Snooping z Dynamic ARP Inspection oraz segmentację sieci.

ARP a IPv6

IPv6 nie używa ARP. Rozpoznawanie sąsiadów i część funkcji związanych z konfiguracją realizuje Neighbor Discovery Protocol (NDP), zdefiniowany jako zestaw komunikatów ICMPv6.

NDP używa między innymi komunikatów Neighbor Solicitation i Neighbor Advertisement kierowanych na adresy multicast, a także obsługuje wykrywanie routerów, prefiksów i osiągalności sąsiadów. Zarządzanie członkostwem w grupach multicast realizuje osobny mechanizm MLD, również oparty na ICMPv6. Zestaw tych funkcji zastępuje lokalne zastosowania ARP w IPv6.

Powiązane artykuły