Address Resolution Protocol (ARP)
Mapowanie adresów IP na adresy MAC w sieciach lokalnych.
Problem Dwóch Adresów: Sieciowa Opowieść Detektywistyczna
Aby wysłać dane przez internet, komputer musi znać docelowy adres IP. Jest to adres logiczny, który pomaga routerom kierować pakiet przez różne sieci, na przykład z Gdańska do Krakowa. Jednak gdy pakiet dotrze do docelowej sieci lokalnej (np. biurowej sieci Wi-Fi w Krakowie), same adresy IP już nie wystarczą.
Analogia: Wyobraź sobie, że wysyłasz paczkę do koleżanki, „Anny Kowalskiej”, która pracuje w dużej korporacji. Poczta publiczna używa adresu ulicy budynku (jak publiczny adres IP), aby dostarczyć paczkę do właściwego budynku. Ale gdy paczka dotrze do recepcji, personel wewnętrzny musi znać numer biura Anny (np. „Pokój 304”), aby zakończyć dostawę. Jej imię, „Anna Kowalska”, to jej adres logiczny, ale jej fizyczna lokalizacja to „Pokój 304”.
W sieci lokalnej każde urządzenie ma unikalny, stały (numer biura). Aby urządzenie mogło wysłać dane do innego urządzenia w tej samej sieci lokalnej, musi znać adres MAC odbiorcy. Fundamentalne pytanie, przed którym staje każde urządzenie, brzmi: „Wiem, że chcę wysłać ten pakiet na adres IP `192.168.1.100`, ale jaki jest właściwy adres sprzętowy MAC tego urządzenia?”
jest detektywem, który rozwiązuje tę zagadkę. Jego jedynym celem jest przetłumaczenie znanego adresu IP na odpowiadający mu adres MAC w sieci lokalnej.
Proces ARP: „Kto ma ten IP? Podajcie mi!”
Proces ARP to prosty, ale elegancki mechanizm zapytania i odpowiedzi. Gdy urządzenie źródłowe (nazwijmy je Hostem A) chce wysłać pakiet do urządzenia docelowego (Hosta B) w tej samej sieci lokalnej, wykonuje następujące 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 musi je znaleźć. Aby to zrobić, tworzy specjalny komunikat zwany Żądaniem ARP.
Analogia: Działa to tak, jakby Host A wszedł do lobby biurowca i krzyknął: „Uwaga wszyscy! Kto to jest Anna Kowalska pod adresem IP `192.168.1.100`? Proszę podać mi swój numer pokoju!”
Ten „krzyk” to komunikat . Jest on wysyłany na specjalny adres MAC (`FF:FF:FF:FF:FF:FF`), którego nasłuchuje każde urządzenie w sieci lokalnej. Żądanie ARP w istocie zawiera następujące zapytanie:
„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.
Krok 3: Odpowiedź ARP (Unicast)
Tylko urządzenie, które rozpozna w żądaniu swój własny adres IP, odpowie. Wszystkie inne urządzenia w sieci po prostu zignorują to żądanie.
Analogia: W lobby biurowca na zawołanie odpowie tylko Anna Kowalska. Wszyscy inni będą kontynuować swoją pracę.
Host B, rozpoznając swój adres IP `192.168.1.100`, utworzy Odpowiedź ARP. Ta odpowiedź to komunikat , wysłany bezpośrednio na adres MAC Hosta A (który został zawarty w żądaniu). To nie jest krzyk; to bezpośrednia odpowiedź. Odpowiedź ta brzmi:
„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. Ma teraz kluczowe mapowanie: `192.168.1.100` = `DD:EE:FF:44:55:66`. Host A dodaje tę informację do swojej pamięci podręcznej ARP do przyszłego użytku. Teraz, gdy zna fizyczny „numer pokoju”, może wreszcie utworzyć ramkę pakietu danych z poprawnym docelowym adresem MAC i wysłać ją bezpośrednio do Hosta B.
Pamięć Podręczna ARP: Krótkotrwała Pamięć dla Wydajności
Wysyłanie rozgłoszeniowego Żądania ARP dla każdego pojedynczego pakietu byłoby niewiarygodnie nieefektywne i zalałoby sieć niepotrzebnym ruchem. Pamięć podręczna ARP rozwiązuje ten problem, działając jak pamięć krótkotrwała.
- Funkcja: Pamięć podręczna przechowuje dynamiczną listę ostatnio poznanych mapowań adresów IP na MAC.
- Limit Czasowy (Timeout): Wpisy w pamięci podręcznej nie są trwałe. Zazwyczaj są przechowywane przez krótki okres (od kilku minut do kilku godzin, w zależności od systemu operacyjnego). Po upływie tego czasu wpis jest usuwany. Zapewnia to, że pamięć podręczna nie przechowuje nieaktualnych informacji, jeśli urządzenie zmieni adres IP lub zostanie usunięte z sieci. Następnym razem, gdy będzie potrzebna komunikacja, zostanie wysłane 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
Zasięg Działania ARP: Granica Sieci Lokalnej
Jest absolutnie kluczowe, aby zrozumieć, że ARP działa tylko w obrębie jednego segmentu sieci lokalnej (lub domeny rozgłoszeniowej). Żądania ARP są rozgłoszeniami, a routery z definicji nie przekazują komunikatów rozgłoszeniowych między różnymi sieciami.
Jak więc wysyłamy dane do innej sieci?
Wróćmy do naszej analogii z biurem. Jeśli chcesz wysłać paczkę do innej firmy po drugiej stronie miasta, nie próbujesz sam znaleźć osobistego numeru biura odbiorcy. Po prostu adresujesz paczkę do odbiorcy i zostawiasz ją w recepcji swojego budynku. Recepcja (router Twojej sieci, czyli brama domyślna) przejmuje odpowiedzialność za wysłanie jej do publicznego systemu pocztowego.
Gdy Twój komputer (Host A) chce wysłać pakiet do zdalnego celu (jak serwer WWW w internecie), wykonuje następujące kroki:
- 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.
- 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).
- 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.” - 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/odpowiedzi, istnieje kilka innych typów komunikatów i technik ARP, które pełnią specyficzne funkcje.
- 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: Technika, w której router w jednej sieci odpowiada na żądania ARP dotyczące adresów IP znajdujących się w innej sieci. Router skutecznie „kłamie” i podaje własny adres MAC, działając jako pośrednik dla zdalnych hostów. Kiedy otrzymuje pakiet, przekazuje go do rzeczywistego celu. Jest to sposób na połączenie dwóch sieci fizycznych bez zmiany schematów adresacji IP, ale może być skomplikowany w zarządzaniu.
- Bezpłatny ARP (Gratuitous ARP): Jest to komunikat ARP wysyłany przez hosta bez wcześniejszego żądania ARP. Host wysyła rozgłoszeniową Odpowiedź ARP (lub Żądanie) dla swojego własnego adresu IP. Służy to dwóm głównym celom:
- Wykrywanie Konfliktów IP: Gdy urządzenie otrzymuje nowy adres IP, wysyła bezpłatny ARP. Jeśli inne urządzenie w sieci odpowie, oznacza to, że ten adres IP jest już w użyciu, a urządzenie zgłosi błąd konfliktu adresów IP.
- Aktualizacja Pamięci Podręcznej: Jeśli urządzenie zmieni kartę sieciową (a tym samym adres MAC), ale zachowa swój adres IP, może wysłać bezpłatny ARP, aby natychmiast zaktualizować pamięć podręczną ARP wszystkich innych urządzeń w sieci, zapewniając, że dane będą teraz wysyłane na nowy adres MAC. Jest to również kluczowe w systemach wysokiej dostępności, gdzie serwer zapasowy przejmuje adres IP uszkodzonego serwera głównego.
ARP a Bezpieczeństwo Sieci
Prostota i oparta na zaufaniu natura ARP czynią go podatnym na znaczące zagrożenie bezpieczeństwa znane jako ARP Spoofing lub Zatruwanie ARP. Ponieważ urządzenia w sieci ślepo ufają odpowiedziom ARP, złośliwy atakujący może wysyłać fałszywe odpowiedzi ARP.
Na przykład atakujący mógłby powiedzieć bramie domyślnej, że adres MAC atakującego odpowiada adresowi IP Twojego komputera. Jednocześnie mógłby powiedzieć Twojemu komputerowi, że adres MAC atakującego należy do bramy domyślnej. To umieszcza maszynę atakującego pośrodku całego Twojego ruchu internetowego, pozwalając mu na podsłuchiwanie, modyfikowanie lub blokowanie Twoich danych w ramach ataku typu Man-in-the-Middle (MitM). Do łagodzenia tego ryzyka stosuje się różne mechanizmy bezpieczeństwa.
Koniec Epoki: Rola ARP w IPv6
Wraz z wprowadzeniem IPv6, protokół ARP został oficjalnie wycofany. Jego funkcje zostały całkowicie zastąpione przez bardziej kompleksowy i wydajny zestaw protokołów zintegrowanych z ICMPv6, znany zbiorczo jako Protokół Wykrywania Sąsiadów (NDP).
NDP wykonuje rozpoznawanie adresów (podstawową funkcję ARP), ale robi to przy użyciu wydajniejszych komunikatów multemisji zamiast rozgłoszeń, a także obsługuje inne krytyczne funkcje, takie jak wykrywanie routerów, wykrywanie prefiksów i autokonfiguracja adresów. Chociaż problem rozpoznawania adresu warstwy 3 na adres warstwy 2 wciąż istnieje, protokół używany do jego rozwiązania w nowoczesnym świecie IPv6 jest zupełnie nowy.