Protokół rozpoznawania adresów to sposób, w jaki aplikacja sieciowa lub urządzenie określa adres Ethernet innego urządzenia. Znany również pod akronimem ARP, próbuje dopasować adres protokołu internetowego (IP) do adresu sprzętowego. Protokół ARP jest używany przez każde urządzenie w sieci lokalnej podczas pierwszej komunikacji z innym urządzeniem w tej samej sieci.
Aplikacje i urządzenia sieciowe komunikują się na wysokim poziomie za pomocą pakietów w warstwie sieciowej stosu protokołów. Pakiety te kierowane są na adresy IP. Gdy każdy pakiet jest wysyłany przez sieć lokalną (LAN) przy użyciu warstwy łącza danych, musi być również znany adres Ethernet odbiorcy. Adresy IP można przypisywać dynamicznie i zmieniać w czasie, podczas gdy adresy Ethernet zasadniczo pozostają takie same. Aplikacja lub urządzenie potrzebuje sposobu na określenie adresu sprzętowego aktualnie skojarzonego z danym adresem IP.
Protokół rozpoznawania adresów definiuje standardową metodę wykrywania tych adresów. Protokół ARP został udokumentowany przez Internet Engineering Task Force (IETF) w 1982 roku jako Request For Comments (RFC) 826. Gdy system jest gotowy do wysłania pakietu IP, sprawdza pamięć podręczną ostatnio rozwiązanych adresów. Jeśli docelowy adres IP nie znajduje się w pamięci podręcznej, wysyła komunikat do całej sieci LAN za pomocą ARP. Ten komunikat żąda, aby urządzenie z docelowym adresem IP odpowiedziało swoim adresem sprzętowym Ethernet.
Ten pakiet żądania protokołu rozpoznawania adresów zawiera adresy IP i adresy sprzętowe żądającego, a także poszukiwany adres IP. Każde urządzenie w sieci LAN nasłuchuje pakietu żądania ARP zawierającego jego adres IP. Jeśli jest słyszany, pasujące urządzenie tworzy pakiet odpowiedzi ARP zawierający jego adres sprzętowy Ethernet. Ten pakiet odpowiedzi jest następnie wysyłany bezpośrednio do żądającego, który przechowuje adresy w swojej pamięci podręcznej ARP do późniejszego wykorzystania. Odpowiadający może również przechowywać adresy w swojej pamięci podręcznej, ponieważ prawdopodobnie będzie dalej komunikował się z żądającym.
Adresy IP w wersji 4 (IPv4) i adresy Ethernet to najczęstsze typy adresów rozwiązywanych przez protokół rozpoznawania adresów. Pakiet żądania obsługuje jednak inne typy w polach Typ protokołu i Długość adresu. Adresy IP w wersji 6 (IPv6) są rozwiązywane za pomocą protokołu Neighbor Discovery Protocol (NDP) zamiast ARP.
Protokół RARP (Reverse Address Resolution Protocol) żąda adresu IP dla adresu sprzętowego żądającego. Serwer RARP odpowiada na jedno z tych żądań, przydzielając nowy adres IP i kojarząc go z adresem sprzętowym żądającego. Reverse ARP jest uważany za przestarzały — jego funkcjonalność jest włączona do protokołu DHCP (Dynamic Host Configuration Protocol). Inverse Address Resolution Protocol żąda istniejącego adresu IP skojarzonego z podanym adresem sprzętowym. W takim przypadku adres sprzętowy może być adresem dowolnego węzła w tej samej sieci LAN.