La Vita di un Pacchetto

Come fanno dei dispositivi a comunicare tra di loro?

CCNA

1/26/2023

Vediamo ora come comunicano i dispositivi all'interno di una topologia di rete più complessa e che più rispecchia quella che si trova nella realtà.
Immaginiamo che host A voglia mandare un pacchetto al FQDN esempio.com, ma non ne conosce l'indirizzo IP.
Host A trattiene il pacchetto e manda una richiesta DNS al suo server che si trova nella sottorete 10.10.100.10, poi compara il suo indirizzo IP e maschera di sottorete con l'IP del server DNS, nota che si trovano in due sottoreti differenti e quindi la richiesta DNS deve venir mandata attraverso il suo default gateway (10.10.10.1).

A questo punto Host A invia la richiesta ARP, che ha per MAC sorgente il MAC di Host A e come MAC di destinazione ha l'indirizzo di broadcast di livello 2 FFFF.FFFF.FFFF.
La richiesta viene ricevuto dalla Porta 1 dello Switch 1, che aggiorna la sua tabella MAC con una voce che collega l'indirizzo MAC di Host A alla sua Porta 1.

La richiesta ARP colpisce il Router A nella sua interfaccia 10.10.10.1. Il router processa la richiesta e vede che è per lui, quindi invia una risposta ARP in unicast all'Host A e aggiunge alla sua cache ARP una voce che lega l'indirizzo IP 10.10.10.10 all'indirizzo MAC 1111.2222.3333.

La risposta arriva allo Switch 1 che aggiunge alla sua tabella MAC una voce che collega l'indirizzo MAC 4444.5555.6666 alla sua Porta 2, quindi invia la risposta ARP solo su Porta 1 a cui è collegato Host A.

Host A riceve la risposta ARP e aggiunge alla sua cache ARP una voce che lega l'IP 10.10.10.1 al MAC 4444.5555.6666. Ora Host A capisce che se vuole comunicare con un'altra rete deve mandare il traffico tramite questo router (Router A).
Adesso Host A è in grado di raggiungere il sito, ma per farlo deve prima risolvere il nome del dominio (esempio.com) nel suo indirizzo IP e si affida al Server DNS.

Host A manda la richiesta DNS al Router A che poi si occuperà di inoltrare la richiesta al Server DNS.
La richiesta arriva allo Switch 1 che la inoltra sulla Porta 2 a cui è collegato il Router A (che si trova già nella tabella MAC di Switch 1).
Notare che la richiesta DNS è unicast.
Il pacchetto arriva al Router A che nota l'indirizzo IP di destinazione (10.10.100.10), nota anche che ha un'interfaccia nella sottorete 10.10.100.0/24, quindi sa che la destinazione dovrebbe essere raggiungibile tramite quella porta (Porta 3).
Tuttavia, non conosce l'indirizzo MAC del Server DNS (10.10.100.10), quindi trattiene il pacchetto DNS e manda una richiesta ARP tramite la Porta 3.

La richiesta ARP ha per indirizzo MAC sorgente quello dell'interfaccia del Router A che si trova nella sottorete 10.10.100.0 (Porta 3) e per indirizzo MAC di destinazione quello di broadcast di livello 2.
La richiesta ARP viene ricevuta dallo Switch 1, che a sua volta aggiunge una voce nella tabella MAC che lega la sua Porta 1 con l'indirizzo MAC 8888.9999.AAAA dell'interfaccia di Router A. Lo switch trasmette quindi la richiesta come traffico di broadcast.
Il pacchetto ARP arriva così al Server DNS nella sua interfaccia 10.10.100.10. Il server processa il pacchetto e vede che è per lui. Invia, quindi, la risposta ARP al Router A e aggiunge una voce alla sua cache ARP che collega l'IP 10.10.100.1 al MAC 8888.9999.AAAA.

La risposta ARP raggiuge lo Switch 2 che, prima, mappa l'indirizzo MAC 333.4444.5555 del Server DNS con la porta 2 nella tabella MAC, poi invia la richiesta solo sulla sua Porta 1.
Il Router riceve la risposta e mappa l'indirizzo IP 10.10.100.10 all'indirizzo MAC 3333.4444.5555 aggiungedoli nella sua cache ARP, quindi manda la richiesta DNS che stava trattenendo.

A questo punto si hanno dei cambiamenti nel pacchetto DNS: vengono aggiornati gli indirizzi MAC sorgente e di destinatario, ora per MAC sorgente abbiamo quello dell'interfaccia del Router A nella sottorete 10.10.100.1/24 e per MAC di destinazione abbiamo quello del Server DNS. Gli indirizzi IP rimangono, però, invariati.
Lo Switch 2 riceve il pacchetto DNS, consulta la sua tabella MAC e vede che è già presente la voce che cerca, quindi inoltra il pacchetto DNS solo sulla sua Porta 2.
Il Server DNS riceve il pacchetto e processandolo nota che è per lui, quindi procede deincapsulandolo e vede che è una richiesta DNS dove l'IP 10.10.10.10 chiede di risolvere www.esempio.com, cerca nelle sue informazioni e vede una voce che collega il sito www.esempio.com all'IP 10.10.12.10.
Il Server a questo punto sa che deve mandare la risposta tramite il Router A perché la destinazione si trova in un'altra sottorete. Inoltre il Server ha già il MAC del router nella sua cache ARP, non deve far altro che mandare la risposta DNS al Router A.

Il Server invia la risposta che viene ricevuta prima dallo Switch 2, che inoltra il traffico solo sulla sua Porta 1 (perché ha già una voce nella tabella MAC).
Il Router A riceve il pacchetto e vede che l'IP di destinazione è 10.10.10.10, consulta la sua cache ARP e nota che ha già il MAC corrispondente a quell'IP e quindi sa su che porta deve mandare il pacchetto.

Il Router A inoltra la risposta DNS sulla sua Porta 1, gli indirizzi MAC sorgente e di destinazione cambiano, e lo Switch 1 riceve il pacchetto DNS dalla sua Porta 2, processando il pacchetto nota che è per il MAC 1111.2222.3333 e lo inoltra sulla Porta 1 dopo aver consultato e trovato la voce corrispondente nella sua tabella MAC.
La risposta arriva finalmente all'Host A che viene a conoscenza che www.esempio.com è disponibile a 10.10.12.10, ora può aggiornare il pacchetto che stava trattenendo dall'inizio.
Siccome www.esempio.com non si trova nella stessa sottorete, Host A sa che deve mandare il traffico al suo default gateway.

Ora è arrivato il momento in cui Host A chiede al web server che si trova a 10.10.12.10 di mostrargli la pagina www.esempio.com.
Host A compone quindi un pacchetto chiamato Richiesta HTTP con il metodo GET, gli indirizzi sorgenti MAC e IP sono quelli di Host A, mentre gli indirizzi MAC e IP di destinazione sono quelli del default gateway (4444.5555.6666) e del web server (10.10.12.10).
Il pacchetto viene prima ricevuto dallo Switch 1, che inoltra il traffico sulla Porta 2 a cui è collegato il default gateway, e dopo dal Router A che processa il pacchetto e nota che non ha interfacce nella sottorete di destinazione (10.10.12.10/24). Gli serve un percorso (una route) per arrivare a destinazione, e questa route può essere configurata dall'amministratore (route statica) oppure imparata dinamicamente da un protocollo di routing (anch'esso configurato dall'amministratore).
Nel nostro esempio l'amministratore ha già configurato una route statica per la rete 10.10.12.0/24 con l'indirizzo del prossimo salto di 10.10.11.2.
Il Router A ha un'interfaccia Ethernet nella sottorete 10.10.11.0, ma non conosce ancora l'indirizzo MAC del salto successivo 10.10.11.2, quindi trattiene il pacchetto HTTP e genera un pacchetto ARP per 10.10.11.2.

La nuova richiesta ARP generata dal Router A ha come indirizzo MAC sorgente quello dell'interfaccia del Router che si trova in questa sottorete (MAC della Porta 2) e come MAC di destinazione ha il solito indirizzo di broadcast di livello 2 (FFFF.FFFF.FFFF).
Il Router B riceve la richiesta ARP tramite la sua Porta 1 e processando il pacchetto, nota che è per lui.
Manda quindi una risposta ARP unicast al Router A, aggiungendo contemporaneamente una voce che collega l'IP 10.10.11.1 al MAC 5555.6666.7777 alla sua cache ARP.

Il Router A riceve la risposta ARP e, dopo aver aggiornato la rispettiva cache, invia il pacchetto HTTP che stava trattenendo al Router B.

Il Router A riceve la risposta ARP e, dopo aver aggiornato la rispettiva cache e gli indirizzi MAC sorgente e di destinazione del pacchetto HTTP che sta trattenendo, lo invia al Router B.
Il Router B riceve il pacchetto e processandolo nota che è per 10.10.12.10.
Ha un'interfaccia nella sottorete 10.10.12.0/24 quindi sa che la destinazione dovrebbe essere raggiungibile tramite quella porta, ma ancora non conosce il MAC di 10.10.12.10 e quindi deve trattenere il pacchetto HTTP e generare un'altra richiesta ARP e mandarla tramite l'interfaccia 10.10.12.1.

La richiesta ARP viene ricevuta dallo Switch 3, che prima aggiunge una voce nella sua tabella MAC che lega l'indirizzo MAC 7777.8888.9999 della Porta 2 del Router B alla sua Porta 1, poi inoltra in broadcast il pacchetto ricevuto.
La richiesta viene così mandata dallo Switch 3 fino all'interfaccia 10.10.12.10 del web server, che processa la richiesta e vede che è per lui.
Aggiunge una voce alla sua cache ARP che mappa 10.10.12.1 al MAC 7777.8888.9999 e compone quindi una risposta ARP unicast per il Router B.

La risposta arriva allo Switch 3 che inserisce la voce collegante il MAC 2222.3333.4444 alla Porta 2 alla sua tabella MAC e inoltra il traffico unicast al Router B.
Questo riceve il traffico e aggiunge una voce alla sua cache ARP, che lega l'IP 10.10.12.10 al MAC 2222.3333.4444, quindi finisce di comporre la richiesta HTTP (aggiornando l'indirizzo MAC sorgente e di destinazione) e la invia.
Lo switch riceve la richiesta dalla Porta 1 e la inoltra solo sulla Porta 2, da cui sa si può arrivare al web server.
Il web server riceve la richiesta e scomponendola, nota che il destinatario è lui.
A questo punto ogni pacchetto HTTP aggiuntivo raggiungerà la sua destinazione finale senza intoppi: tutti i dispositivi lungo il percorso hanno le informazioni necessarie ad instradare tutto il traffico che ricevono.

Il Router B riceve il traffico e aggiunge una voce alla sua cache ARP, che lega l'IP 10.10.12.10 al MAC 2222.3333.4444, quindi finisce di comporre la richiesta HTTP (aggiornando l'indirizzo MAC sorgente e di destinazione) e la invia.
Lo switch riceve la richiesta dalla Porta 1 e la inoltra solo sulla Porta 2, da cui sa si può arrivare al web server.
Il web server riceve la richiesta e scomponendola, nota che il destinatario è lui.
A questo punto ogni pacchetto HTTP che l'Host A scambia con il web server, raggiungerà la sua destinazione finale senza intoppi: tutti i dispositivi lungo il percorso hanno le informazioni necessarie ad instradare tutto il traffico che ricevono.