Per essere realmente spedito a una stazione, il pacchetto IP deve essere inserito in un frame del livello di data link ed essere inviato sul mezzo di trasmissione; il frame deve contenere l’indirizzo fisico della stazione, di solito l’indirizzo MAC.
Per inviare un frame a una stazione bisogna trasformare l’indirizzo IP del destinatario nel suo indirizzo MAC.
La risoluzione dell’indirizzo IP in un indirizzo MAC viene effettuata tramite un protocollo del livello di rete chiamato ARP (Address Resolution Protocol).
Una stazione che deve spedire un pacchetto ad un’altra stazione sulla stessa rete locale manda in broadcast sulla rete un pacchetto contenente l’indirizzo IP della stazione destinataria (ARP non si appoggia sul protocollo IP ma direttamente sulla rete locale); tutte le stazioni lo ricevono ma solo la stazione che ha quell’indirizzo IP risponde mandando il proprio indirizzo MAC.
Esistono varie ottimizzazioni per rendere più efficiente ARP.
Il risultato delle richieste ARP (le combinazioni indirizzo IP, indirizzo MAC) viene memorizzato nella cache ARP in modo da non dover ripetere la richiesta per l’invio di altri pacchetti.
Per evitare che il destinatario debba a sua volta usare il protocollo ARP per rispondere al mittente, il mittente può includere nel proprio pacchetto ARP il suo indirizzo IP e il suo indirizzo MAC; il destinatario può inserire questi valori nella cache per la risposta; in realtà non solo il destinatario ma tutte le stazioni possono farlo.
Un’altra ottimizzazione, che permette anche di controllare se esistono più stazioni con lo stesso indirizzo IP, consiste nell’invio da parte di ogni stazione, all’inizializzazione, di un pacchetto di ricerca del proprio indirizzo IP, contenente anche indirizzo IP e MAC del mittente; tutte le stazioni possono registrare i valori nella propria cache e non dovrebbe esserci risposta; se c’è vuol dire che un’altra stazione ha lo stesso indirizzo IP.
Per permettere la gestione di cambiamenti della rete (per esempio per modifiche alla configurazione) ogni voce nella cache ARP è configurata con un tempo di vita (TTL – Time To Live); allo scadere del tempo la voce viene cancellata dalla cache; il contatore del tempo di vita viene reinizializzato ogni volta che si utilizza la voce della cache.
La cache può contenere un numero massimo di voci; se è piena si elimina la voce più vecchia.
Se la destinazione si trova su una rete remota si deve mandare il pacchetto a un router (eventualmente a quello predefinito).
Per mandare il pacchetto al router bisogna conoscerne l’indirizzo MAC; il mittente cerca l’indirizzo MAC del router nella sua cache e se non è presente invia una richiesta ARP sulla rete.
Può esserci una stazione collegata alla rete che non ha un indirizzo MAC; per esempio un computer collegato alla rete non attraverso una scheda di rete ma via modem; quando un’interfaccia non ha un indirizzo fisico, come nel caso del modem, viene utilizzato un indirizzo fisico logico assegnato al momento della connessione alla rete.