ARP – Address Resolution Protocol
ARP (ang. Address Resolution Protocol) jest protokołem warstwy 2 modelu OSI, wykorzystywanym w sieciach TCP/IP do mapowania adresów logicznych IPv4 na adresy fizyczne (MAC) w sieciach Ethernet i innych technologiach warstwy łącza danych.
Historia
ARP został opracowany w 1982 roku jako część zestawu protokołów RFC 826. Zanim przyjęto IPv4, w sieciach ARPANET używano protokołu RARP (Reverse ARP) do uzyskiwania adresu IP od hosta znającego wyłącznie swój adres MAC.
Podstawowa zasada działania
Gdy host w sieci IPv4 chce wysłać pakiet do innego hosta w tej samej podsieci, musi znać jego adres MAC. Procedura wygląda następująco:
- Host tworzy zapytanie ARP request, które jest ramką Ethernet o adresie docelowym
ff:ff:ff:ff:ff:ff(broadcast). - Zapytanie zawiera adres IP, którego MAC jest potrzebny.
- Wszytkie urządzenia w sieci otrzymują ramkę, ale jedynie ten, którego adres IP zgadza się z żądanym, odpowiada ARP reply zawierającym swój adres MAC.
- Odpowiedź jest przesyłana bezpośrednio do pytającego hosta (unicast) i zostaje zapisana w lokalnej tablicy ARP.
Format komunikatu ARP
Pakiet ARP ma stałą długość 28 bajtów w wersji IPv4 i składa się z następujących pól:
- Hardware type – typ warstwy 2 (zwykle 1 dla Ethernet).
- Protocol type – typ warstwy 3 (zwykle 0x0800 dla IPv4).
- Hardware size – liczba bajtów adresu MAC (6).
- Protocol size – liczba bajtów adresu IP (4).
- Opcode – 1 = request, 2 = reply.
- Sender hardware address (SHA) – adres MAC nadawcy.
- Sender protocol address (SPA) – adres IP nadawcy.
- Target hardware address (THA) – w zapytaniu ustawiany na 00:00:00:00:00:00.
- Target protocol address (TPA) – adres IP odbiorcy.
Warianty i rozszerzenia
RARP (Reverse ARP)
Starszy protokół umożliwiający hostowi uzyskanie swojego adresu IP na podstawie znajomości jedynie adresu MAC. Został wycofany na rzecz DHCP.
Gratuitous ARP
Specjalny pakiet ARP wysyłany bez żądania, najczęściej w celu:
- sprawdzenia, czy dany adres IP nie jest już używany w sieci (detekcja konfliktu adresów);
- ogłoszenia zmiany adresu MAC (np. przy przełączaniu się interfejsu);
- aktualizacji tablic ARP w przełącznikach warstwy 2 (tzw. ARP spoofing protection).
Proxy ARP
W tym trybie router odpowiada na zapytania ARP w imieniu hostów znajdujących się w innej podsieci, co pozwala na tworzenie „płaskich” topologii sieciowych.
Bezpieczeństwo
ARP nie posiada mechanizmów uwierzytelniania, co czyni go podatnym na ataki typu ARP spoofing i Man‑in‑the‑Middle. Popularne środki zaradcze to:
- dynamiczne monitorowanie tablic ARP (DHCP snooping);
- statyczne wpisy ARP w krytycznych urządzeniach;
- technologia Port Security w przełącznikach.
Implementacje i wsparcie w systemach operacyjnych
Wszystkie współczesne systemy operacyjne posiadają własną implementację ARP:
- Linux – polecenie
arporazip neighbourw iproute2; - Windows – narzędzie
arp -a; - macOS – polecenie
arp -aw powłoce BSD.
Alternatywy w IPv6
W IPv6 protokół ARP został zastąpiony przez Neighbor Discovery (ND), który wykorzystuje komunikację ICMPv6 do rozwiązywania adresów.