Ogni volta che un host vuole comunicare con un altro host su un segmento di rete locale, deve in qualche modo determinare il suo indirizzo fisico (questo è ciò che è un indirizzo MAC, dopotutto).
Il processo di risoluzione degli indirizzi fisici si verifica con il protocollo ARP . Questo processo consiste in uno scambio di frame ethernet per mappare indirizzi logici in indirizzi fisici (più comunemente, indirizzi IP in indirizzi MAC).
Ora, se questo processo si verificava ogni volta che 2 host desideravano scambiare dati sul segmento di rete, ciò avrebbe un impatto negativo sulle prestazioni della rete, specialmente nei casi in cui vi è un numero elevato di host che comunicano costantemente tra loro.
Per risolvere questo problema, i sistemi in rete memorizzano nella cache le voci degli indirizzi fisici localmente per un certo periodo di tempo. In questo modo, ogni volta che un sistema vuole interagire con un altro sistema sulla rete locale, cerca il mapping degli indirizzi fisico-logico in una tabella memorizzata nella sua memoria. Questo è molto, molto più veloce del processo di risoluzione degli indirizzi menzionato in precedenza.
Le voci nella cache ARP non sono permanenti, però. Hanno una certa durata e una volta scaduto vengono nuovamente aggiornati attraverso una nuova ricerca ARP. Questo metodo riduce al minimo il numero globale di ricerche ARP richieste per la comunicazione e allo stesso tempo mantiene aggiornate le mappature logiche-fisiche degli indirizzi.
Per "preservare" una situazione ARP Man-In-The-Middle, devi costantemente spoofare gli indirizzi MAC per tenerli nelle cache ARP dei sistemi mirati per la durata dell'attacco.
Le durate delle voci della cache ARP dipendono dall'implementazione e variano da sistema operativo a sistema operativo.
Hai detto che non hai visto alcun "pacchetto" in Wireshark, quindi presumo che stavi catturando il traffico IP. Le ricerche ARP si verificano a un livello inferiore (Livello 2) e utilizzano frame ethernet e non pacchetti IP per lo scambio di dati.