Questo protocollo si colloca tra il livello di rete e il livello di collegamento (livello sottostante a quello di rete).
Gli host e i router al livello di rete sono identificati dai loro indirizzi IP. Questi ultimi sono di solito implementati a livello software, e devono essere globalmente unici su internet. A livello di collegamento le interfacce che inviano e ricevono frame sono identificati da un indirizzo fisico o indirizzo hardware. Il MAC address è l'indirizzo della scheda di rete del dispositivo. L'indirizzo IP e l'indirizzo MAC sono diversi (hanno lunghezza diversa: MAC = 48 bit, IP = 32 bit).
C'è la necessità di associare l'IP di un dispositivo con il suo indirizzo MAC. Questa operazione viene effettuata da ARP (Address Resolution Protocol). Quando ARP scopre a quale IP appartiene un certo MAC lo salva nella sua cache per un successivo utilizzo. Queste associazioni possono cambiare, dato che un indirizzo IP può essere utilizzato da un diversi host (con MAC diversi). ARP periodicamente aggiorna la sua tabella di associazioni.
Di seguito un indirizzo MAC:
Vediamo come funziona ARP per associare indirizzi IPv4 con i rispettivi MAC.
Si creano 4 situazioni differenti:
La figura illustra un esempio del funzionamento di ARP in una rete interna.
Vi è una LAN ethernet cui sono connesse diverse macchine: lnxclient, bdsserver, wincli2, ecc.
La macchina lnxclient vuole inviare un pacchetto alla macchina winserv2.
lnxclient conosce l'IP di destinazione di winserv2, ma non sa qual è il MAC della sua interfaccia.
Allora lnxclient procede con una ARP request e chiede a tutti (in broadcast) quale fosse il MAC address dell'indirizzo IP con il quale vuole comunicare: 10.10.12.52.
La richiesta (come si vede dalle frecce entranti in ogni host) raggiunge tutti gli host. Al passo 2, l'host winsrv2 riconosce il suo indirizzo IP nella richiesta ARP, allora comunica il suo MAC, ma a chi lo comunica? Lo comunica all'indirizzo sorgente della richiesta ARP. Al passo 3 winsrv2 inoltra il suo MAC address a lnxclient che al passo 4 giunge a chi ha fatto l'ARP request.
Alla fine di questo procedimento, l'host che ha fatto la richiesta salva nella cache l'associazione tra MAC address e IP address.
Altro esempio: A vuole inviare datagrammi a B. A si rende conto di non avere nella sua tabella ARP il MAC di B. A dovrà usare ARP per conoscere questa informazione.
Prima di tutto A invia in boradcast una richiesta ARP. Tale richiesta contiene:
I pacchetti ARP vengono piazzati direttamente dentro un frame a livello di collegamento (come un frame ethernet per esempio).
Come abbiamo detto prima, ci sono quattro casi. ARP è utilizzato sia dagli host che dai router.
Questi casi danno ci permettono di distinguere consegne dirette da consegne indirette.
Anzitutto distinguiamo tabelle di routing da tabelle di forwarding: ci sono due tipi di tabelle usate dagli host e dai router.
La tabella di routing contiene tutte le rotte conosciute dal router, ovvero i percorsi che possono essere utilizzati per raggiungere le diverse reti ad esso collegate. Questa tabella viene costruita dal router utilizzando gli algoritmi di routing, che analizzano le informazioni ricevute dai router vicini per determinare i percorsi migliori. In genere le tabelle di routing sono mantenute in un formato user-friendly, come un insieme di tabelle o anche un database.
La tabella di forwarding, invece, contiene solo le rotte che sono state scelte come preferite dagli algoritmi di routing. Questa tabella è più piccola e semplice ed è scritta in linguaggio macchina rispetto alla tabella di routing, e viene utilizzata dal router per instradare i pacchetti in modo rapido ed efficiente.
I router non sono gli unici dispositivi di rete che hanno le tabelle di routing. Anche gli host le hanno. Grazie ad esse gli host sanno quando inviare un pacchetto incapsulato dentro un frame direttamente verso la destinazione (verso un altro host, senza passare dal router) o se inviare il pacchetto (incapsulato in un frame) ad un router in modo che possa essere inoltrato verso la sua destinazione.
La consegna diretta è quel tipo di consegna che avviene senza l'utilizzo di un router.
Host invia frame ad un host che fa parte della sua stessa rete.
La consegna indiretta è quel tipo di consegna che avviene grazie all'utilizzo di un router.
Host invia frame ad un router perché l'host di destinazione non fa parte della sua stessa rete.
Cosa succede se due macchine sono configurate con lo stesso IP?
Quando una nuova macchina arriva, il protocollo IP annuncia il suo indirizzo a tutti gli altri host, l'host con lo stesso indirizzo del nuovo arrivato realizza che è stato copiato e risponde annunciando sé stesso. I due indirizzi notificano l'errore e lo riportano sulla console/schermo delle due macchine con una finestra d'errore. D'altro canto, il nuovo arrivato, quando realizza di avere un IP copiato, risponde annunciando sé stesso, ciò si ripete per entrambi gli host, ed entrambi gli host non potranno funzionare se non si interviene correggendo il conflitto di indirizzi.
Quando un host annuncia sé stesso: gratuitous ARP.