Come è già stato illustrato nel cap. 16, ogni scheda di rete è identificata da un valore univoco (a livello mondiale) assegnato generalmente dal costruttore, detto indirizzo fisico. Poiché il colloquio tra le interfaccie avviene effettivamente al livello più basso nello stack di protocolli considerato (il livello link nello stack TCP/IP), esso costituisce di fatto l’unico identificativo utilizzato dalle schede per colloquiare (v. il MAC address per le schede Ethernet), sebbene a livello IP possa sembrare che l’identificazione del mittente e del destinatario avvenga per mezzo degli indirizzi IP. Gli indirizzi IP sono utilizzati dal protocollo IP che però è a sua volta incapsulato nel protocollo del livello link (Ethernet, Token ring, ...).
La relazione esistente tra gli indirizzi fisici e gli indirizzi IP viene mantenuta dal sistema in un’opportuna memoria cache (neighbour cache) e gestita per mezzo di opportuni pacchetti che costituiscono il protocollo di scoperta del vicinato (neighbor discovery). Nella neighbour cache viene mantenuto un elenco degli indirizzi IP di cui il sistema conosce il relativo indirizzo fisico. Ogni indirizzo contenuto in tale elenco viene ritenuto valido per un certo intervallo di tempo (per default circa 9 minuti) dopo il quale viene rimosso ed eventualmente aggiornato.
La gestione della neighbour cache è leggermente diversa per i protocolli IPv4 ed IPv6, ma sostanzialmente analoga.
Quando un pacchetto deve essere trasmesso sulla rete, per prima cosa esso discende nello stack di protocolli di comunicazione e la gestione di ogni livello è tale che il pacchetto di ogni livello viene incapsulato all’interno di quello del livello immediatamente inferiore, fintantoché non si raggiunge il livello più basso ed il pacchetto venga quindi spedito effettivamente sulla rete. Dunque, con riferimento allo stack TCP/IP, ad un certo punto il pacchetto del livello transport viene incapsulato in un datagram IP, nel quale vengono inseriti gli indirizzi IP del mittente e del destinatario. A questo punto, viene controllato se l’indirizzo al quale deve essere inviato il datagram IP, ovvero quello del next-hop (che può essere quello del destinatario o meno, secondo le politiche di routing) è contenuto nella neighbour cache. Nel caso in cui non lo sia, viene richiesto in rete l’indirizzo fisico dell’interfaccia del next-hop tramite un opportuno pacchetto IP. Ottenuto tale indirizzo fisico, esso verrà memorizzato nella neighbour cache. In questo modo il protocollo del livello link (il livello più basso) può utilizzarlo per inviare effettivamente il pacchetto sulla rete.