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 redigera

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 redigera

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 redigera

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

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

InARP redigera

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 redigera

Källor redigera

Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia.