Protocollo ARP
La traslazione degli indirizzi IP in indirizzi MAC richiede il mantenimento di un database distribuito contenente le associazioni necessarie agli utenti.
In piccole reti locali è possibile ottenere questo risultato registrando il legame esistente tra indirizzi in un apposito file da installare e mantenere aggiornato su tutte le stazioni connesse alla rete.
Anche se questo metodo presenta il fascino dell’immediatezza, non risulta applicabile in reti di grandi dimensioni e in tutti quei casi dove gli indirizzi IP vengono assegnati dinamicamente durante la fase di avvio delle stazioni.
Inoltre rappresenta uno spreco di energie memorizzare, in ogni stazione, tutte le associazioni. Ogni stazione, infatti, tende a scambiare dati in maniera molto disomogenea, contattando frequentemente solo un gruppo ristretto di stazioni e raramente le altre.
Per eliminare l’intervento manuale, richiesto all’amministratore dei sistemi, e ottimizzare il numero di legami che devono essere memorizzati in ogni stazione, è stato introdotto un protocollo dinamico in grado di risalire automaticamente al legame tra indirizzi quando necessario.
Il protocollo responsabile della risoluzione automatica degli indirizzi IP in indirizzi MAC è noto come protocollo ARP (Address Resolution Protocol) e fa parte a tutti gli effetti della famiglia di protocolli TCP/IP.
In casi particolari (per esempio nella fase di avvio di macchine senza dischi) può essere utile effettuare la risoluzione inversa ricavando l’indirizzo IP corrispondente a un prefissato indirizzo MAC.
Per questo compito è stato ideato il protocollo RARP (Reverse ARP).
Il protocollo ARP fornisce il supporto necessario alla conversione degli indirizzi IP, affiche il datagramma IP possa essere incapsulato entro un frame.
L’indirizzo IP sorgente viene semplicemente convertito nell’identificativo MAC impresso nella memoria non volatile della scheda di rete locale.
Più complesso è il problema di convertire l’indirizzo IP di destinazione nell’indirizzo MAC corrispondente, anche perchè non sempre l’indirizzo MAC desiderato corrisponde all’identificativo della scheda di rete della stazione di destinazione del datagramma IP.
Esistono infatti, due casi distinti:
- quello in cui la stazione di destinazione appartiene alla stessa rete locale della stazione sorgente
- quello in cui la stazione appartiene ad altra rete che può essere raggiunta solo instradando il datagramma attraverso una serie di gateway.
Se la stazione di destinazione è esterna alla rete locale, il datagramma IP viene consegnato a un gateway che provvederà all’instradamento verso la destinazione finale.
In questo caso l’indirizzo MAC corrisponderà a quello della scheda di rete del gateway invece che alla destinazione finale.
Per tentare la traslazione, il protocollo ARP consulta prima una tabella locale.
Se la tabella non contiene l’associazione desiderata è responsabilità del protocollo ARP procurarsi l’informazione mancante.
In tal caso la stazione che deve trasmettere il frame , confeziona un messaggio di richiesta che invia autonomamente sulla rete locale con indirizzo MAC di destinazione broadcast (FF:FF:FF:FF:FF:FF in notazione esadecimale).
Gli switch non limitano la diffusione di un simile frame che si propaga in tutta la rete locale.
Ogni scheda di rete riceve tutte le richieste ARP generate sulla rete locale.
Indipendentemente alla modalità in cui la scheda di rete si trova ad operare, essa riconosce l’indirizzo MAC come broadcast e passa i dati della richiesta al processo ARP attivo sulla stazione.
Struttura di un frame ARP
La richiesta ARP è trasportata nel campo dati di un comune frame.
Oltre a una intestazione, il protocollo ARP trasporta due coppie di indirizzi:
- l’indirizzo MAC della scheda di rete sorgente (6 byte);
- l’indirizzo IP della stazione sorgente (4 byte);
- l’indirizzo MAC della scheda di rete remota (6 byte);
- l’indirizzo IP da convertire (4 byte).
In una richiesta ARP, tutti i campi contenenti indirizzi sono inizializzati, tranne quello relativo all’indirizzo MAC della scheda remota (settato a 0).
Il processo ARP nelle stazioni attive sulla rete locale ricevono a richiesta ARP, ma solo una di esse normalmente invia una risposta alla stazione richiedente (ARP reply).
A rispondere è la stazione che riconosce come proprio quanto indicato nel campo indirizzo IP da convertire.
La risposta ARP viene indirizzata direttamente alla scheda di rete che ha emesso la richiesta (trasmissione unicast).
Nelle risposte ARP tutti e quattro i campi indirizzo contengono valori significativi. Se la stazione di destinazione appartiene alla stessa rete locale della stazione sorgente, l’indirizzo MAC della scheda remoto aè proprio quello della stazione finale, altrimenti è quello dell’interfaccia di un gateway.
Ricevuta la risposta ARP, il processo ARP nella stazione sorgente estrae il legame desiderato dal messaggio, completando finalmente il frame da spedire in rete.
I messaggi ARP rimangono confinati all’interno di una rete locale (dominio di broadcast locale).
I gateway di frontiera non sono generalmente abilitati a propagare messaggi ARP su altre sottoreti IP. Talvolta un gateway può essere configurato per rispondere con il proprio indirizzo MAC a una ARP request relativa a un indirizzo associato a una stazione appartenente ad altra rete, direttamente connessa al dispositivo.
Questa funzionalità, definita proxy ARP, può dar luogo a problemi di instradamento e di sicurezza e dovrebbe essere disabilitata su tutti i dispositivi di interconnessione.
Per minimizzare il numero di richieste ARP, le stazioni memorizzano, in una cache, tutte le associazioni scoperte attraverso l’interrogazione condotta via ARP.
Una stazione è istruita a emettere una nuova richiesta ARP se, e solo se, non possiede alcuna associazione valida memorizzata nella propria cache ARP.
Le informazioni contenute nella cache ARP possono essere di natura permanente o apprese dinamicamente via rete.
Le associazioni dinamiche sono valide generalmente per 30 secondi.
Il contenuto della cache ARP di una stazione o di un gateway può essere visualizzato dall’utente tramite comando arp –a (indipendentemente dal sistema operativo utilizzato).
Per ottimizzare il numero di messaggi scambiati, i processi ARP memorizzano anche i legami presenti nel corpo dei messaggi ARP broadcast, anche se le richieste non li riguardano direttamente.
Una generica stazione può trarre vantaggio da questa funzionalità, emettendo, durante la fase di avvio una richiesta ARP non sollecitata (ARP gratuita) contenente il legame tra il proprio indirizzo MAC e il proprio IP.
L’invio di una richiesta gratuita consente di annunciare alle stazioni attive sulla rete il proprio legame IP/MAC in modo che questo possa essere inserito in cache per un uso futuro.