Per poter inviare i pacchetti nelle reti TCP/IP, un mittente ha bisogno so­prat­tut­to di tre in­for­ma­zio­ni 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 di­spo­si­ti­vi di rete ricevono la vostra maschera di rete e l’indirizzo IP au­to­ma­ti­ca­men­te e in modo fles­si­bi­le, nel momento in cui si collegano a una rete. A questo scopo i di­spo­si­ti­vi di co­mu­ni­ca­zio­ne di tra­smis­sio­ne, come router o hub, ricorrono al pro­to­col­lo DHCP. Nelle reti locali si possono inserire entrambi i dati anche ma­nual­men­te. Invece l’indirizzo hardware viene assegnato dal pro­dut­to­re del ri­spet­ti­vo di­spo­si­ti­vo e collegato solo grazie all’Address Re­so­lu­tion Protocol (ARP) con un preciso indirizzo IP.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

De­fi­ni­zio­ne del pro­to­col­lo ARP

L’Address Re­so­lu­tion Protocol (in italiano “Pro­to­col­lo di ri­so­lu­zio­ne degli indirizzi”) è stato spe­ci­fi­ca­to nello standard RFC 826 per mettere in atto la ri­so­lu­zio­ne degli indirizzi IPv4 in indirizzi MAC. ARP risulta ir­ri­nun­cia­bi­le per la tra­smis­sio­ne di dati nelle reti ethernet per due motivi: il primo è che si possono inviare agli host di de­sti­na­zio­ne de­si­de­ra­ti i singoli frame di dati (chiamati anche ethernet frame) di un pacchetto IP solo grazie all’indirizzo hardware; il pro­to­col­lo Internet non può infatti risalire a questi indirizzi fisici au­to­no­ma­men­te. La seconda ragione è che al pro­to­col­lo IPv4 manca la pos­si­bi­li­tà di me­mo­riz­za­re gli indirizzi dei di­spo­si­ti­vi, per via della sua limitata lunghezza. Con un proprio mec­ca­ni­smo 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 ri­so­lu­zio­ne dell’indirizzo tramite ARP è es­sen­zia­le di­stin­gue­re se l’indirizzo IP dell’host di de­sti­na­zio­ne 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 con­trol­la­to se la cache ARP presenti già il ri­spet­ti­vo record.

N.B.

La cache ARP cor­ri­spon­de a una lista tabellare degli indirizzi MAC necessari più uti­liz­za­ti, dove i singoli record vengono generati au­to­ma­ti­ca­men­te o ma­nual­men­te. 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 di­spo­si­ti­vo viene spento o riavviato e l’intera cache ARP viene svuotata.

Se all’indirizzo IP è stato già assegnato il suo cor­ri­spon­den­te fisico, questo verrà uti­liz­za­to per l’in­di­riz­za­men­to. Se così non fosse, il mittente invia una richiesta ARP (ARP Request) con l’IP di de­sti­na­zio­ne 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 con­fron­ta­no l’indirizzo IP inserito nella richiesta con il proprio e re­spin­go­no la richiesta se non c’è nessuna cor­ri­spon­den­za. Però se una stazione registra che si tratta del proprio indirizzo, reagisce con una risposta ARP (ARP Reply), tra­smet­ten­do anche l’indirizzo MAC. Entrambe le parti possono ora re­gi­stra­re l’indirizzo IP e MAC del loro in­ter­lo­cu­to­re nella cache, ponendo così le basi per lo scambio di dati.

Se l’host di de­sti­na­zio­ne si trova nella stessa sottorete, il mittente si rivolge allo standard gateway (so­li­ta­men­te il router), rag­giun­gi­bi­le a sua volta tramite la com­bi­na­zio­ne di indirizzo MAC e IP, per cui è perciò ne­ces­sa­rio anche in questo caso l’Address Re­so­lu­tion Protocol. Il gateway accetta il pacchetto dopo la ri­so­lu­zio­ne dell’indirizzo e si occupa infine dell’inoltro all’host di de­sti­na­zio­ne. Per questo motivo analizza prima di tutto l’header IP per ricevere le in­for­ma­zio­ni ne­ces­sa­rie. Infine sfrutta a sua volta le pos­si­bi­li­tà del pro­to­col­lo ARP e risolve così

  • di­ret­ta­men­te l’indirizzo fisico del computer di de­sti­na­zio­ne, quando si trova in una sottorete adiacente,
  • o l’indirizzo hardware di un altro gateway, quando il computer di de­sti­na­zio­ne si trova in una sottorete eliminata e il percorso del pacchetto non può essere de­ter­mi­na­to ri­cor­ren­do alle tabelle di routing.

Nell’ultimo scenario nominato il pro­ce­di­men­to si ripete così spesso fino a quando il pacchetto non è giunto a de­sti­na­zio­ne o il campo TTL (Time to live) ha accettato il valore 0 nell’header dell’IP.

Come appare la struttura dei messaggi ARP

Il pro­to­col­lo ARP utilizza un semplice formato di messaggi per inviare richieste e ri­spon­de­re a queste. Anche se è previsto ori­gi­na­ria­men­te per gli indirizzi IPv4 e MAC, sono teo­ri­ca­men­te possibili anche altri pro­to­col­li di rete, perciò esistono campi per il tipo e la di­men­sio­ne dell’indirizzo hardware e di pro­to­col­lo. Di con­se­guen­za si può quindi anche dif­fe­ren­zia­re la di­men­sio­ne com­ples­si­va 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 rap­pre­sen­ta­zio­ne indica i com­po­nen­ti di un simile pacchetto di in­for­ma­zio­ni:

  Bits 0–7 Bits 8–15 Bits 16–23 Bits 24–31
0 Tipo di indirizzo hardware (HTYPE) Tipo di pro­to­col­lo di rete (PTYPE)
32 Lunghezza dell’indirizzo hardware (HLEN) Lunghezza dell’indirizzo del pro­to­col­lo (PLEN) Ope­ra­zio­ne
64

Indirizzo MAC del mittente
96
112
Indirizzo IP del mittente
144

Indirizzo MAC del de­sti­na­ta­rio
176
192 Indirizzo IP del de­sti­na­ta­rio

L’header ARP comincia quindi con l’in­for­ma­zio­ne lunga 16 bit relativa al tipo dell‘indirizzo hardware. Nel caso dei di­spo­si­ti­vi ethernet previsti, il pacchetto ri­ce­ve­reb­be qui il valore 1. Segue l’in­di­ca­zio­ne del pro­to­col­lo (sempre 16 bit) che dovrebbe servire come base per la ri­so­lu­zio­ne dell’indirizzo ARP. Gli indirizzi IPv4 sono con­tras­se­gna­ti dal valore 0x0800 (2048), che viene del resto anche uti­liz­za­to nei frame ethernet come valore per il pro­to­col­lo IPv4 (EtherType). I due campi suc­ces­si­vi danno in­for­ma­zio­ni sulla lunghezza di entrambi gli indirizzi (espressa in byte). Gli indirizzi MAC hanno una di­men­sio­ne di 6 byte (48 bit) e vengono perciò con­tras­se­gna­ti 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 suc­ces­si­vi (Ope­ra­zio­ne) sono riservati per la spe­ci­fi­ca­zio­ne del messaggio ARP. Così 1 indica una richiesta ARP, mentre 2 rivela che si tratta di una risposta ARP. Infine i pacchetti com­pren­do­no i 4 indirizzi rilevanti e di­chia­ra­ti prima:

  • Indirizzo MAC del mittente: contiene in una richiesta l’indirizzo MAC del computer da ri­chie­de­re; in una risposta ARP si trova in questo punto l’indirizzo fisico della de­sti­na­zio­ne o del gateway suc­ces­si­vo.
  • Indirizzo IP del mittente: comprende l’indirizzo IP del computer richiesto (richiesta ARP) o della de­sti­na­zio­ne o del gateway suc­ces­si­vo (risposta).
  • Indirizzo MAC del de­sti­na­ta­rio: 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 è re­gi­stra­to in questo caso l’indirizzo hardware dell’host ri­chie­den­te.
  • Indirizzo IP del de­sti­na­ta­rio: 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.

Con­fi­gu­ra­re il pro­to­col­lo ARP: come funziona

L’Address Re­so­lu­tion Protocol, in qualità di pro­to­col­lo standard, è sup­por­ta­to su qualsiasi piat­ta­for­ma e si occupa come tale in back­ground della ri­so­lu­zio­ne di indirizzo MAC, in­di­pen­den­te­men­te 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 ag­giun­ge­re o eliminare ma­nual­men­te 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 pos­si­bi­li­tà.

Quando si tratta di esaminare le com­bi­na­zio­ni inserite composte dall’indirizzo IP e MAC, il comando arp –a funziona su tutti i sistemi. Tramite l’in­se­ri­men­to vengono elencate le coppie di indirizzi per tutte le in­ter­fac­ce di rete che uti­liz­za­no ARP. In aggiunta ricevete anche in­for­ma­zio­ni se un record è stato generato di­na­mi­ca­men­te o è stato inserito ma­nual­men­te. Se ampliate il comando con un indirizzo IP concreto, l’ap­pli­ca­zio­ne vi fornisce esclu­si­va­men­te solo i relativi dati.

Se ora volete ag­giun­ge­re au­to­no­ma­men­te la com­bi­na­zio­ne degli indirizzi di un host o eli­mi­nar­la 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 cor­ri­spon­den­te con il seguente comando:

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

Al­tret­tan­to ve­lo­ce­men­te viene eliminata questa in­for­ma­zio­ne dalla cache, se al posto del parametro “Delete” la applicate a uno degli indirizzi ar­chi­via­ti:

arp -d 157.55.85.212

Al posto di un indirizzo Internet specifico potete anche uti­liz­za­re il se­gna­po­sto * per eliminare tutti i dati salvati nella cache.

Quali varianti del pro­to­col­lo ARP esistono?

A parte la funzione standard pre­sen­ta­ta finora, ci sono una serie di pos­si­bi­li­tà di utilizzo al­ter­na­ti­ve per i pacchetti di messaggi ARP. Così un host può ad esempio anche uti­liz­zar­li per informare gli altri par­te­ci­pan­ti 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 de­sti­na­zio­ne. Visto che ciò accade su proprio impulso, questa variante del pro­to­col­lo viene anche chiamata Gra­tui­tous 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 in­di­riz­za­men­to IP, non provocano in teoria alcuna risposta, al­tri­men­ti ciò par­le­reb­be a favore del fatto che il mittente dell’indirizzo IP uti­liz­za­to ri­sul­te­reb­be assegnato due volte. Se uno degli host con­tat­ta­ti tramite Broadcast reagisce comunque con un messaggio di risposta, ciò sug­ge­ri­sce all’am­mi­ni­stra­to­re di rete una con­fi­gu­ra­zio­ne errata.
  2. Gra­tui­tous ARP consente a tutti gli host di re­gi­stra­re l’indirizzo hardware del mittente nella propria cache. Ciò è par­ti­co­lar­men­te van­tag­gio­so se questo indirizzo, ad esempio, è stato cambiato per via di una so­sti­tu­zio­ne della scheda di rete. Di solito i messaggi ARP mo­di­fi­ca­ti vengono sempre inviati durante il boot del computer.
  3. I server che sono con­fi­gu­ra­ti per ga­ran­tir­ne la stabilità e risultano quindi dei server so­sti­tu­ti­vi con­di­vi­do­no spesso lo stesso indirizzo IP. Per fare in modo che il traffico dati in casi gravi venga rein­di­riz­za­to al server che entra in azione, questo deve rendere noto agli altri host il suo indirizzo MAC. In questo caso i messaggi GARP si di­mo­stra­no un’opzione ec­cel­len­te.
  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 co­sid­det­to home agent prende l’IP del Mobile host, quando questo si cancella dalla rete domestica. Per attirare l’at­ten­zio­ne su di sé, invia un messaggio Gra­tui­tous ARP; allo stesso modo il Mobile host si riattiva quando si trova di nuovo nella rete domestica.

Un’altra variante è rap­pre­sen­ta­ta dal Reverse Address Re­so­lu­tion Protocol (RARP) che rovescia prin­ci­pal­men­te 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 pos­si­bi­li­tà di in­di­vi­dua­re il proprio indirizzo Internet alcuni di­spo­si­ti­vi, in cui non è prevista l’as­se­gna­zio­ne o la me­mo­riz­za­zio­ne per­ma­nen­te (ad esempio nelle work station senza i drive dei dischi rigidi).

Ugual­men­te diffusa è la modifica Proxy ARP che con­fe­ri­sce ai router l’abilità di ri­spon­de­re alle richieste ARP degli altri host. Così la co­mu­ni­ca­zio­ne tra due host è possibile da diverse sottoreti, senza che siano ne­ces­sa­rie delle modifiche alle con­fi­gu­ra­zio­ni di rete dei di­spo­si­ti­vi. Se una richiesta ARP raggiunge un router con Proxy ARP attivato, sarà questo a ri­spon­de­re al posto del vero e proprio computer di de­sti­na­zio­ne. Trasmette il suo indirizzo MAC, così che riceve anche i pacchetti del mittente. Infine il router inoltra i dati all’host di de­sti­na­zio­ne ri­cor­ren­do alle in­for­ma­zio­ni della cache ARP.

N.B.

Se i messaggi ARP e la cache ARP vengono ma­ni­po­la­ti con­sa­pe­vol­men­te per con­sen­ti­re l’accesso non au­to­riz­za­to a dati con­fi­den­zia­li, 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.

Vai al menu prin­ci­pa­le