Address Resolution Protocol

ARP, Address Resolution Protocol, är ett kommunikationsprotokoll som används för att koppla samman en IP-adress med en MAC-adress. ARP brukar anses som ett nätverksprotokoll, och är förbindelsen mellan nätverk- och länklagret i OSI-modellen.

Ett nätverkskort, exempelvis för ethernet, är en nivå 2-utrustning som kan skicka ramar (frames) från en nod till en annan. Alla noder är adresserbara genom sina MAC-adresser. Den fysiska signaleringen från nod till nod utgår alltså från dessa MAC-adresser, medan applikationerna som kommunicerar använder sig av IP-adresser. För att detta skall ske måste alltså en nod associera mottagarens IP-adress med mottagarens MAC-adress.

Hur ARP fungerar 

En ARP-förfrågan (ARP-request) frågar i princip "Vem har IP-adress x.x.x.x" och är en nivå-2 broadcast med den egna nodens MAC-adress som avsändaradress. Noden med IP-adress x.x.x.x svarar med en unicast tillbaka.

ARP-trafik loggad med tcpdump kan se ut så här:
 [root@teacher ~]# tcpdump -ennqti eth0 \( arp or icmp \)
 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
 listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
 00:19:5b:4c:2c:5A > ff:ff:ff:ff:ff:ff, ARP, length 60: arp who-has 192.168.10.179 (ff:ff:ff:ff:ff:ff) tell 192.168.10.1
 00:14:22:52:6b:03 > 00:19:5b:4c:2c:5A, ARP, length 42: arp reply 192.168.10.179 is-at 00:14:22:52:6b:03
 00:14:22:52:6b:03 > ff:ff:ff:ff:ff:ff, ARP, length 42: arp who-has 192.168.10.31 tell 192.168.10.179
 00:40:8c:55:70:9c > 00:14:22:52:6b:03, ARP, length 60: arp reply 192.168.10.31 is-at 00:40:8c:55:70:9c

Först kommer det en fråga ("who-has") från värden med ip-adress 192.168.10.1 som skickats till broadcastadressen ff:ff:ff:ff:ff:ff. Den kommer att uppfattas av alla noder inom broadcastdomänen. Den dator på vilken loggningen sker är efterfrågad och svarar därför (reply). Alla andra datorer ignorerar denna förfrågan.

Andra exemplet är hur den loggande datorn skickar en fråga efter MAC-adressen som motsvarar ip 192.168.10.31 och får svar från noden med MAC-adress 00:40:8c:55:70:9c.

ARP-tabeller 

För att slippa göra en ARP-förfrågan för varje paket som ska skickas cachar operativsystemet resultatet i en tabell. På många operativsystem finns kommandot arp för att visa och manipulera arp-cachen. Exempelvis listar arp -a cachen och arp -d raderar cachen.

 [root@teacher ~]# arp -a
 gw (192.168.10.1) at 00:19:5B:4C:2C:5A [ether] on eth0
 server (192.168.10.11) at 00:30:05:C7:D4:04 [ether] on eth0
 ? (192.168.10.31) at 00:40:8C:55:70:9C [ether] on eth0

Tag bort värden gw från tabellen:
 [root@teacher ~]# arp -d gw

Ny tabell:
 [root@teacher ~]# arp -a
 gw (192.168.10.1) at <incomplete> on eth0
 server (192.168.10.11) at 00:30:05:C7:D4:04 [ether] on eth0
 ? (192.168.10.31) at 00:40:8C:55:70:9C [ether] on eth0

ARP och routning 
ARP används i fyra fall när noder vill kommunicera:

 När noder är i samma nätverk och vill kommunicera med varandra
 När noder är i olika nätverk och behöver använda sig av en router för att nå mottagande nod
 När en router behöver vidarebefordra ett paket åt en nod genom en annan router
 När en router behöver vidarebefordra ett paket från en nod till en annan på samma nätverk

InARP 
InARP är en akronym för "Inverse Adress Resolution Protocol". 
Det är ett protokoll som används för att få tag på adresser på nätverksskiktet (till exempel IP-adresser) från en station på datalänkskiktet. Det används främst inom Frame Relay protokollet och ATM nätverk, där en Virtuell Kanals Datalänk adresser fås ibland av Datalänk signalering, de motsvarande adresserna i nätverksskiktet måste vara tillgängliga innan man kan använda Virtuella kanaler.

ARP mappar nätverks adresser till datalänk adresser, InARP fungerar på samma sätt men omvänt, dessutom så är InARP implementerat som en utvidgning av ARP.

Se även 
 Reverse Address Resolution Protocol (RARP)
 ARP spoofing genom ARP poisoning

Källor 

Nätverksskiktsprotokoll
IP-adresser