Che cos’è ARP (Address Resolution Protocol)?

Per poter inviare i pacchetti nelle reti TCP/IP, un mittente ha bisogno soprattutto di tre informazioni relative all’host a cui ci si indirizza: la maschera di sottorete, l’indirizzo IP e l’indirizzo MAC (chiamato anche indirizzo hardware o fisico). I dispositivi di rete ricevono la vostra maschera di rete e l’indirizzo IP automaticamente e in modo flessibile, nel momento in cui si collegano a una rete. A questo scopo i dispositivi di comunicazione di trasmissione, come router o hub, ricorrono al protocollo DHCP. Nelle reti locali si possono inserire entrambi i dati anche manualmente. Invece l’indirizzo hardware viene assegnato dal produttore del rispettivo dispositivo e collegato solo grazie all’Address Resolution Protocol (ARP) con un preciso indirizzo IP.

Definizione del protocollo ARP

L’Address Resolution Protocol (in italiano “Protocollo di risoluzione degli indirizzi”) è stato specificato nello standard RFC 826 per mettere in atto la risoluzione degli indirizzi IPv4 in indirizzi MAC. ARP risulta irrinunciabile per la trasmissione di dati nelle reti ethernet per due motivi: il primo è che si possono inviare agli host di destinazione desiderati i singoli frame di dati (chiamati anche ethernet frame) di un pacchetto IP solo grazie all’indirizzo hardware; il protocollo Internet non può infatti risalire a questi indirizzi fisici autonomamente.

La seconda ragione è che al protocollo IPv4 manca la possibilità di memorizzare gli indirizzi dei dispositivi, per via della sua limitata lunghezza. Con un proprio meccanismo di caching ARP c’è la giusta soluzione anche per questo. Per il più nuovo IPv6 vengono prese le relative funzioni dal Neighbor Discovery Protocol (NDP).

Come funziona ARP?

Al momento della risoluzione dell’indirizzo tramite ARP è essenziale distinguere se l’indirizzo IP dell’host di destinazione si trovi nella stessa rete locale o in un’altra sottorete. Se quindi l’indirizzo MAC deve essere assegnato a un preciso IP, avviene prima di tutto un’ispezione della maschera di sottorete.

Se l’IP risiede nella rete locale, nel primo passaggio viene controllato se la cache ARP presenti già il rispettivo record.

N.B.

La cache ARP corrisponde a una lista tabellare degli indirizzi MAC necessari più utilizzati, dove i singoli record vengono generati automaticamente o manualmente. I primi record, descritti anche come dinamici, ricevono una marca temporale alla cui scadenza vengono eliminati di nuovo dalla cache. Gli ultimi, cioè i record di indirizzo statici, vengono mantenuti fino a quando il dispositivo viene spento o riavviato e l’intera cache ARP viene svuotata.

Se all’indirizzo IP è stato già assegnato il suo corrispondente fisico, questo verrà utilizzato per l’indirizzamento. Se così non fosse, il mittente invia una richiesta ARP (ARP Request) con l’IP di destinazione a tutti gli host nella rete. A questo scopo utilizza l’indirizzo ARP Broadcast FF:FF:FF:FF:FF:FF come indirizzo di ricezione. Le singole stazioni confrontano l’indirizzo IP inserito nella richiesta con il proprio e respingono la richiesta se non c’è nessuna corrispondenza. Però se una stazione registra che si tratta del proprio indirizzo, reagisce con una risposta ARP (ARP Reply), trasmettendo anche l’indirizzo MAC. Entrambe le parti possono ora registrare l’indirizzo IP e MAC del loro interlocutorenella cache, ponendo così le basi per lo scambio di dati.

Se l’host di destinazione si trova nella stessa sottorete, il mittente si rivolge allo standard gateway (solitamente il router), raggiungibile a sua volta tramite la combinazione di indirizzo MAC e IP, per cui è perciò necessario anche in questo caso l’Address Resolution Protocol. Il gateway accetta il pacchetto dopo la risoluzione dell’indirizzo e si occupa infine dell’inoltro all’host di destinazione. Per questo motivo analizza prima di tutto l’header IP per ricevere le informazioni necessarie. Infine sfrutta a sua volta le possibilità del protocollo ARP e risolve così

  • direttamente l’indirizzo fisico del computer di destinazione, quando si trova in una sottorete adiacente,
  • o l’indirizzo hardware di un altro gateway, quando il computer di destinazione si trova in una sottorete eliminata e il percorso del pacchetto non può essere determinato ricorrendo alle tabelle di routing.

Nell’ultimo scenario nominato il procedimento si ripete così spesso fino a quando il pacchetto non è giunto a destinazione o il campo TTL (Time to live) ha accettato il valore 0 nell’header dell’IP.

Come appare la struttura dei messaggi ARP

Il protocollo ARP utilizza un semplice formato di messaggi per inviare richieste e rispondere a queste. Anche se è previsto originariamente per gli indirizzi IPv4 e MAC, sono teoricamente possibili anche altri protocolli di rete, perciò esistono campi per il tipo e la dimensione dell’indirizzo hardware e di protocollo. Di conseguenza si può quindi anche differenziare la dimensione complessiva dei pacchetti ARP. Nel caso standard, ovvero l’utilizzo di ARP nelle reti ethernet IPv4, ne deriva ad esempio una lunghezza di 224 bit (28 byte). La seguente rappresentazione indica i componenti di un simile pacchetto di informazioni:

 

Bits 0–7

Bits 8–15

Bits 16–23

Bits 24–31

0

Tipo di indirizzo hardware (HTYPE)

Tipo di protocollo di rete (PTYPE)

32

Lunghezza dell’indirizzo hardware (HLEN)

Lunghezza dell’indirizzo del protocollo (PLEN)

Operazione

64

                            
                        
                          Indirizzo MAC del mittente

96

112

                          Indirizzo IP del mittente

144

                         

                          Indirizzo MAC del destinatario

176

192

                          Indirizzo IP del destinatario

L’header ARP comincia quindi con l’informazione lunga 16 bit relativa al tipo dell‘indirizzo hardware. Nel caso dei dispositivi ethernet previsti, il pacchetto riceverebbe qui il valore 1. Segue l’indicazione del protocollo (sempre 16 bit) che dovrebbe servire come base per la risoluzione dell’indirizzo ARP. Gli indirizzi IPv4 sono contrassegnati dal valore 0x0800 (2048), che viene del resto anche utilizzato nei frame ethernet come valore per il protocollo IPv4 (EtherType). I due campi successivi danno informazioni sulla lunghezza di entrambi gli indirizzi (espressa in byte). Gli indirizzi MAC hanno una dimensione di 6 byte (48 bit) e vengono perciò contrassegnati con il valore 6. Gli indirizzi IP sono lunghi 4 byte (32 bit), perciò qui si trova di solito il valore 4.

I 16 bit successivi (Operazione) sono riservati per la specificazione del messaggio ARP. Così 1 indica una richiesta ARP, mentre 2 rivela che si tratta di una risposta ARP. Infine i pacchetti comprendono i 4 indirizzi rilevanti e dichiarati prima:

  • Indirizzo MAC del mittente: contiene in una richiesta l’indirizzo MAC del computer da richiedere; in una risposta ARP si trova in questo punto l’indirizzo fisico della destinazione o del gateway successivo.
  • Indirizzo IP del mittente: comprende l’indirizzo IP del computer richiesto (richiesta ARP) o della destinazione o del gateway successivo (risposta).
  • Indirizzo MAC del destinatario: in questo campo si trova l’indirizzo MAC Broadcast FF:FF:FF:FF:FF:FF, nel momento in cui il mittente fa una richiesta; in una risposta ARP è registrato in questo caso l’indirizzo hardware dell’host richiedente.
  • Indirizzo IP del destinatario: in una richiesta questo campo comprende l’indirizzo IP dell’host, di cui si ricerca l’indirizzo MAC; in un messaggio di risposta si trova qui l’indirizzo IP del computer richiesto.

Configurare il protocollo ARP: come funziona

L’Address Resolution Protocol, in qualità di protocollo standard, è supportato su qualsiasi piattaforma e si occupa come tale in background della risoluzione di indirizzo MAC, indipendentemente che si tratti di un sistema Linux, Windows o macOS. Inoltre per i diversi sistemi operativi esiste un omonimo strumento della riga di comando con cui si può mostrare la cache ARP e aggiungere o eliminare manualmente i record. Aprendo il prompt dei comandi o il terminale e inserendo il comando arp (su Windows) o arp -man (su Linux) ricevete un riepilogo compatto delle possibilità.

Quando si tratta di esaminare le combinazioni inserite composte dall’indirizzo IP e MAC, il comando arp –a funziona su tutti i sistemi. Tramite l’inserimento vengono elencate le coppie di indirizzi per tutte le interfacce di rete che utilizzano ARP. In aggiunta ricevete anche informazioni se un record è stato generato dinamicamente o è stato inserito manualmente. Se ampliate il comando con un indirizzo IP concreto, l’applicazione vi fornisce esclusivamente solo i relativi dati.

Se ora volete aggiungere autonomamente la combinazione degli indirizzi di un host o eliminarla dalle tabelle ARP, avete bisogno dei parametri -s e -d. Se ad esempio dietro l’indirizzo IP 157.55.85.212 si nasconde l’indirizzo fisico 00-aa-00-62-c6-09, create un record statico corrispondente con il seguente comando:

arp -a 157.55.85.212 00-aa-00-62-c6-09

Altrettanto velocemente viene eliminata questa informazione dalla cache, se al posto del parametro “Delete” la applicate a uno degli indirizzi archiviati:

arp -d 157.55.85.212

Al posto di un indirizzo Internet specifico potete anche utilizzare il segnaposto* per eliminare tutti i dati salvati nella cache.

Quali varianti del protocollo ARP esistono?

A parte la funzione standard presentata finora, ci sono una serie di possibilità di utilizzo alternative per i pacchetti di messaggi ARP. Così un host può ad esempio anche utilizzarli per informare gli altri partecipanti della rete riguardo il proprio indirizzo MAC. A questo scopo invia una richiesta ARP all’indirizzo MAC Broadcast e inserisce il proprio IP sia come indirizzo di origine che di destinazione. Visto che ciò accade su proprio impulso, questa variante del protocollo viene anche chiamata Gratuitous ARP (in italiano “ARP non richiesto”).  Un messaggio simile auto avviato dell’indirizzo fisico può ad esempio avvenire per i seguenti motivi:

  1. I messaggi GARP, per via del loro indirizzamento IP, non provocano in teoria alcuna risposta, altrimenti ciò parlerebbe a favore del fatto che il mittente dell’indirizzo IP utilizzato risulterebbe assegnato due volte. Se uno degli host contattati tramite Broadcast reagisce comunque con un messaggio di risposta, ciò suggerisce all’amministratore di rete una configurazione errata.
  2. Gratuitous ARP consente a tutti gli host di registrare l’indirizzo hardware del mittente nella propria cache. Ciò è particolarmente vantaggioso se questo indirizzo, ad esempio, è stato cambiato per via di una sostituzione della scheda di rete. Di solito i messaggi ARP modificati vengono sempre inviati durante il boot del computer.
  3. I server che sono configurati per garantirne la stabilità e risultano quindi dei server sostitutivi condividono spesso lo stesso indirizzo IP. Per fare in modo che il traffico dati in casi gravi venga reindirizzato al server che entra in azione, questo deve rendere noto agli altri host il suo indirizzo MAC. In questo caso i messaggi GARP si dimostrano un’opzione eccellente.
  4. Il Mobile IP consente a un Mobile host di mantenere il proprio indirizzo IP anche nel caso di un cambio di rete. Per questo motivo un cosiddetto home agent prende l’IP del Mobile host, quando questo si cancella dalla rete domestica. Per attirare l’attenzione su di sé, invia un messaggio Gratuitous ARP; allo stesso modo il Mobile host si riattiva quando si trova di nuovo nella rete domestica.

Un’altra variante è rappresentata dal Reverse Address Resolution Protocol (RARP) che rovescia principalmente la funzione di ARP: non risolve quindi gli indirizzi IP in quelli MAC, bensì il contrario, cioè risolve gli indirizzi MAC in quelli IP. Fanno uso di questa possibilità di individuare il proprio indirizzo Internet alcuni dispositivi, in cui non è prevista l’assegnazione o la memorizzazione permanente (ad esempio nelle work station senza i drive dei dischi rigidi).

Ugualmente diffusa è la modifica Proxy ARP che conferisce ai router l’abilità di rispondere alle richieste ARP degli altri host. Così la comunicazione tra due host è possibile da diverse sottoreti, senza che siano necessarie delle modifiche alle configurazioni di rete dei dispositivi. Se una richiesta ARP raggiunge un router con Proxy ARP attivato, sarà questo a rispondere al posto del vero e proprio computer di destinazione. Trasmette il suo indirizzo MAC, così che riceve anche i pacchetti del mittente. Infine il router inoltra i dati all’host di destinazione ricorrendo alle informazioni della cache ARP.

N.B.

Se i messaggi ARP e la cache ARP vengono manipolati consapevolmente per consentire l’accesso non autorizzato a dati confidenziali, si parla di ARP spoofing. Nel nostro articolo sul tema scoprite come funziona questo tipo di attacco man in the middle e quali misure di sicurezza sono da prendere.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.