Protokół ARP (Address Resolution Protocol)
Protokół ARP jest wymaganym standardem protokołu TCP/IP zdefiniowanym w specyfikacji RFC 826
„Address Resolution Protocol (ARP)”. Protokół ARP zamienia adresy IP używane przez oprogramowanie
protokołu TCP/IP na adresy kontroli dostępu do nośnika, z których korzystają urządzenia sieci LAN.
Protokół ARP oferuje hostom zlokalizowanym w tej samej sieci fizycznej następujące usługi:
Adresy kontroli dostępu do nośnika są uzyskiwane za pomocą żądania emisji sieciowej mającego formę
pytania „Jaki jest adres kontroli dostępu do nośnika dla urządzenia, dla którego skonfigurowano
załączony adres IP?”.
Jeśli nadejdzie odpowiedź na żądanie ARP, nadawca odpowiedzi ARP i urządzenie, które wysłało żądanie
ARP, zapiszą swoje adresy IP i adresy kontroli dostępu do nośnika jako wpisy w tabeli lokalnej, zwanej
także pamięcią podręczną ARP, aby móc ich użyć w przyszłości.
Adresowanie sprzętowe
Urządzenia przeznaczone do współpracy z sieciami LAN powinny mieć unikatowe adresy zaprogramowane
przez producenta. Dla urządzeń pracujących w sieciach Ethernet i Token Ring adres ten znany jest jako
adres kontroli dostępu do nośnika.
Każdy adres kontroli dostępu do nośnika określa urządzenie we własnej sieci fizycznej za pomocą 6-
bajtowej liczby zapisanej w pamięci ROM każdego fizycznego urządzenia sprzętowego, takiego jak karta
sieciowa. Adresy kontroli dostępu do nośnika są zwykle zapisane w notacji szesnastkowej (na przykład
00-AA-00-3F-89-4A).
Zarządzanie i rejestrację adresów kontroli dostępu do nośnika nadzoruje instytut IEEE (Institute of
Electrical and Electronics Engineers). Aktualnie IEEE nadaje unikatowe wartości pierwszym trzem bajtom
adresu kontroli dostępu do nośnika poszczególnych producentów i rejestruje je. Każdy producent może
następnie przypisać ostatnie trzy bajty adresu kontroli dostępu do nośnika poszczególnym kartom
sieciowym.
Jak adresy kontroli dostępu do nośnika są zamieniane na ruch lokalny
przez protokół ARP
Na poniższych rysunkach przedstawiono sposób zamiany adresów IP na adresy kontroli dostępu do
nośnika za pomocą protokołu ARP dla hostów zlokalizowanych w tej samej sieci lokalnej.
Obraz
W tym przykładzie dwa hosty TCP/IP, A i B, są zlokalizowane w tej samej sieci fizycznej. Hostowi A
zostaje przypisany adres IP o wartości 10.0.0.99, a hostowi B adres IP o wartości 10.0.0.100.
Gdy host A podejmuje próbę połączenia się z hostem B, adres przypisany hostowi B za pomocą
oprogramowania (10.0.0.100) jest zamieniany na adres kontroli dostępu do nośnika przypisany
sprzętowo hostowi B w następujący sposób:
1. Na podstawie zawartości tabeli routingu dla hosta A protokół IP określa, że przy przesyłaniu danych
do hosta B będzie używany adres IP o wartości 10.0.0.100. Host A szuka odpowiedniego adresu
sprzętowego dla hosta B w lokalnej pamięci podręcznej ARP.
2. Jeśli host A nie znajdzie mapowania adresu w pamięci podręcznej, do wszystkich hostów w sieci
lokalnej zostanie wyemitowana ramka żądania z pytaniem „Jaki jest adres sprzętowy dla adresu
10.0.0.100?” W żądaniu ARP jest zawarty zarówno adres sprzętowy źródła, jak i adres programowy
źródła — hosta A.
Każdy host w sieci lokalnej otrzymuje żądanie ARP i szuka adresu odpowiadającego własnemu
adresowi IP. Jeśli host nie może znaleźć pasującego adresu, żądanie ARP zostaje odrzucone.
3. Host B określa, czy adres IP zawarty w żądaniu ARP pasuje do jego adresu IP, a następnie dodaje
mapowanie adresu sprzętowego na adres programowy hosta A do lokalnej pamięci podręcznej ARP.
4. Host B wysyła odpowiedź ARP zawierającą jego adres sprzętowy bezpośrednio do hosta A.
5. Po otrzymaniu odpowiedzi ARP hosta B przez hosta A, host A aktualizuje swoją pamięć podręczną
ARP mapowaniem adresu sprzętowego na adres programowy hosta B.
Po określeniu adresu kontroli dostępu do nośnika hosta B host A może przesłać ruch IP do hosta B,
kierując ten ruch na adres kontroli dostępu do nośnika hosta B.
Jak protokół ARP zamienia adresy kontroli dostępu do nośnika na
połączenia zdalne
Protokół ARP służy także do przesyłania datagramów IP do routerów lokalnych w celu dalszego ich
przesłania do miejsc docelowych poza siecią lokalną. W tej sytuacji protokół ARP zamienia adres kontroli
dostępu do nośnika interfejsu routera w sieci lokalnej.
Na poniższym rysunku przedstawiono sposób zamiany adresów IP na adresy sprzętowe przez protokół
ARP dla dwóch hostów zlokalizowanych w dwóch różnych sieciach fizycznych połączonych za pomocą
wspólnego routera.
Obraz
W tym przykładzie host A ma przypisany adres IP o wartości 10.0.0.99, a host B używa adresu IP o
wartości 192.168.0.99. Interfejs routera 1 jest zlokalizowany w tej samej sieci fizycznej, co host A i
używa adresu IP o wartości 10.0.0.1. Interfejs routera 2 jest zlokalizowany w tej samej sieci fizycznej, co
host B i używa adresu IP o wartości 192.168.0.0.1.
Gdy host A próbuje połączyć się z hostem B, adres interfejsu routera 1 (10.0.0.1) przypisany
programowo jest zamieniany na sprzętowy adres kontroli dostępu do nośnika w następujący sposób:
1. Na podstawie tabeli routingu hosta A protokół IP określa, że przy przesyłaniu danych do hosta B
będzie używany adres IP o wartości 10.0.0.1, który jest adresem IP jego bramy domyślnej. Host A
szuka w lokalnej pamięci podręcznej ARP adresu sprzętowego pasującego do adresu IP 10.0.0.1.
2. Jeśli host A nie znajdzie zmapowanego adresu w pamięci podręcznej, do wszystkich hostów w sieci
lokalnej zostanie wyemitowana ramka żądania z pytaniem „Jaki jest adres sprzętowy dla adresu
10.0.0.1?” W żądaniu ARP jest zawarty zarówno adres sprzętowy źródła, jak i adres programowy
źródła — hosta A.
Każdy host w sieci lokalnej otrzymuje żądanie ARP i szuka adresu odpowiadającego własnemu
adresowi IP. Jeśli host nie może znaleźć pasującego adresu, żądanie ARP zostaje odrzucone.
3. Router określa, czy adres IP zawarty w żądaniu ARP pasuje do jego adresu IP, a następnie dodaje
mapowanie adresu sprzętowego na adres programowy hosta A do lokalnej pamięci podręcznej ARP.
4. Następnie router wysyła bezpośrednio do hosta A odpowiedź ARP zawierającą jego adres sprzętowy.
5. Po otrzymaniu przez hosta A odpowiedzi ARP z routera host A aktualizuje swoją pamięć podręczną
ARP mapowaniem adresu sprzętowego na adres programowy 10.0.0.1.
Po określeniu adresu kontroli dostępu do nośnika dla interfejsu routera 1 host A może wysyłać ruch IP do
interfejsu routera 1 na adres kontroli dostępu do nośnika interfejsu routera 1. Następnie router przesyła
ruch do hosta B, używając procesu ARP opisanego w tej sekcji.
Pamięć podręczna ARP
Aby zminimalizować liczbę emisji, protokół ARP obsługuje pamięć podręczną zawierającą mapowania
adresów IP na adresy kontroli dostępu do nośnika, które mogą być użyte w przyszłości. Pamięć
podręczna ARP może zawierać zarówno wpisy dynamiczne, jak i statyczne. Wpisy dynamiczne są
dodawane i usuwane automatycznie cały czas. Wpisy statyczne pozostają w pamięci podręcznej do
ponownego uruchomienia komputera.
Każdy wpis dynamiczny w pamięci podręcznej ARP ma żywotność około 10 minut. Nowe wpisy dodawane
do pamięci podręcznej otrzymują sygnaturę czasową. Jeśli dany wpis nie zostanie ponownie użyty w
ciągu 2 minut od dodania, mija jego termin ważności i zostaje on usunięty z pamięci podręcznej ARP.
Jeśli wpis został ponownie użyty, jego żywotność zostaje przedłużona o 2 minuty. Jeśli wpis jest ciągle
używany, jego okres istnienia jest wydłużany za każdym razem o 2 minuty, ale nie więcej niż do
10 minut.
Pamięć podręczną ARP można przeglądać za pomocą plecenia arp. Aby wyświetlić zawartość pamięci
podręcznej ARP, w wierszu polecenia wpisz polecenie arp –a. Aby wyświetlić opcje wiersza polecenia dla
polecenia arp, wpisz arp /?.