Il protocollo ARP
Funzionamento del protocollo ARP.
CCNA
Il mittente ha bisogno di conoscere l'indirizzo MAC ed IP del destinatario per poter formare il pacchetto che verrà poi inviato.
Per poter imparare l'indirizzo IP abbiamo visto che viene utilizzato il DNS, che risolve un FQDN in un indirizzo IP.
Ora ci serve qualcosa che possa ricavare l'indirizzo MAC: il protocollo ARP (Address Resolution Protocol), usato per mappare l'indirizzo IP all'indirizzo MAC.


Nel caso di sopra il mittente vuole inviare dei dati e conosce già l'indirizzo IP del destinatario, ma incapsulando il pacchetto si blocca al livello 2, perché gli manca l'indirizzo MAC del ricevente ed a questo punto si affida al protocollo ARP.
Come prima cosa il mittente invia una richiesta ARP dicendo che sta cercando l'host con indirizzo IP 172.23.4.2.
L'indirizzo MAC del mittente di questa richiesta è ovviamente 1111.2222.3333, mentre come MAC di destinazione si usa FFFF.FFFF.FFFF che è l'indirizzo di broadcast al livello 2, e viene usato perché il mittente non conosce il MAC del destinatario e quindi la richiesta viene mandata a tutti i dispositivi nella sottorete.
Lo switch riceve il pacchetto e si accorge che è traffico di broadcast (a causa del MAC di destinazione) e lo instrada in tutte le porte tranne quella di ricezione.
Il nostro PC destinatario riceve la richiesta ARP e nota che l'indirizzo IP vi è all'interno è il suo e quindi risponde alla richiesta. A questo punto il PC manda una risposta ARP che ha per MAC sorgente il suo e come MAC di destinazione il MAC che era sorgente nella richiesta ARP.
Quando il nuovo pacchetto arriva allo switch, questo sa già che deve inviarlo sulla porta 1, perché nella sua tabella MAC vi è una voce che collega quella porta all'indirizzo MAC 1111.2222.3333.
Vediamo ora cosa succede quando ci si trova in due reti diverse.
In questo caso non possiamo mandare una richiesta ARP come nell'esempio precedente, questo perché essendo le due reti separate da un router, la richiesta ARP non riuscirebbe ad arrivare all'altra rete.
Il mittente compara il proprio indirizzo IP e maschera di sottorete con l'indirizzo IP di destinazione e nota che si trovano in due reti differenti, manda quindi una richiesta ARP al suo Default Gateway (l'interfaccia del router con indirizzo IP 172.23.4.254


La richiesta ARP colpisce lo switch che nota il traffico di broadcast e lo inoltra in tutte le porte.
La richiesta arriva così al router, che nota che la richiesta è per lui e quindi invia la risposta ARP.


La risposta ha come MAC sorgente il MAC del dispositivo che ha richiesto il pacchetto, quindi 4444.5555.6666 e come MAC di destinazione ha 1111.2222.3333 e questo il router lo sa perchè quel MAC era nella richiesta ARP originale.
Nel frattempo, il PC ha tenuto in attesa il pacchetto dati iniziale fino a quando non conosce l'indirizzo MAC del destinatario.


Il pacchetto IP viene quindi mandato ed ha per IP sorgente l'IP del PC (172.23.4.1), l'IP di destinazione è quello della destinazione finale (192.168.10.1),il MAC sorgente è il MAC del PC (1111.2222.3333.4444) e il MAC di destinazione è quello del default gateway del dispositivo (4444.5555.6666).
Il pacchetto raggiunge così il router e questo vede che lo deve inoltrare all'indirizzo IP 192.168.10.254.
Nel nostro esempio il router non ha ancora comunicato con questo destinatario e quindi non ne conosce l'indirizzo MAC.
Per poterlo scoprire, anche lui si affida al protocollo ARP e invia un richiesta.


Il pacchetto è una richiesta ARP per l'host 192.168.10.1 ed ha come MAC sorgente il MAC del dispositivo che ha inoltrato la richiesta (4444.5555.7777) e come MAC di destinazione l'indirizzo di broadcast di livello 2.
La richiesta arriva al PC di destinazione che nota che la richiesta è per lui, quindi invia una risposta ARP.
Questa risposta ha come indirizzo MAC di destinazione l'indirizzo MAC dell'interfaccia del router che si trova nella rete 192.168.10.0, quindi 192.168.10.254.


Ora che il router conosce l'indirizzo MAC di destinazione può mandare il pacchetto IP che stava trattenendo.
Notare che le informazioni del pacchetto IP non cambiano mai: l'IP sorgente è sempre del mittente iniziale (in questo caso 172.23.4.1) e l'IP di destinazione rimane sempre 192.168.10.1, le uniche cose che cambiano sono gli indirizzi MAC del mittente e del destinatario che vengono aggiornati di salto in salto.