Cos'è#
Il routing è il processo con cui i pacchetti viaggiano da una rete all'altra attraverso router intermedi. Ogni "tappa" si chiama hop. Il TTL limita il numero massimo di hop che un pacchetto può fare prima di essere scartato.
Hop — le tappe del viaggio#
Analogia del treno:
Roma ──────► Bologna ──────► Milano
tappa 1 tappa 2
Non sono fallimenti — sono il percorso normale.In rete:
[Tu] ──► [Router ISP] ──► [Router backbone] ──► [Google]
hop 1 hop 2 hop 3
Ogni hop = un router che riceve il pacchetto
consulta la sua routing table
lo manda al prossimo routerOgni router conosce solo il passo successivo — non il percorso completo:
"Vai al semaforo e chiedi ancora"
"Vai dritto 2km e chiedi ancora"
"Sei arrivato"L'hop è il router che instrada il pacchetto da una subnet alla successiva.
TTL — quante tappe sono disposto a fare#
Analogia del treno:
TTL = 60 → sono disposto a fare massimo 60 cambi
Destinazione richiede 1000 cambi
→ al cambio 60 il treno viene fermato
→ il capotreno manda messaggio a Roma:
"il tuo treno è stato fermato a Bologna"
(in rete: ICMP Time Exceeded)In rete:
Parti con TTL = 64
hop 1 → TTL diventa 63
hop 2 → TTL diventa 62
...
hop 64 → TTL diventa 0
router scarta il pacchetto
manda ICMP Time Exceeded al mittenteIl TTL non è un limite pratico — è una protezione contro i loop:
Routing loop (senza TTL):
Router A → "192.168.2.x? manda a Router B"
Router B → "192.168.2.x? manda a Router A"
Router A → "192.168.2.x? manda a Router B"
... loop infinito
Con TTL:
dopo N hop → pacchetto scartato
problema contenutoNella realtà da Genova a Google ci vogliono 8-12 hop. TTL di default 64 o 128 è abbondantissimo.
Traceroute — come funziona#
Traceroute sfrutta il TTL di proposito per scoprire i router intermedi:
TENTATIVO 1 — TTL=1 (artificialmente basso)
[Tu] ──TTL=1──► [Router 1]
TTL=0 → scarta
manda ICMP Time Exceeded
→ traceroute scopre: hop 1 = questo IP ✅
TENTATIVO 2 — TTL=2
[Tu] ──TTL=2──► [Router 1] ──TTL=1──► [Router 2]
TTL=0 → scarta
manda ICMP Time Exceeded
→ traceroute scopre: hop 2 = questo IP ✅
TENTATIVO 3 — TTL=3
[Tu] ──TTL=3──► [Router 1] ──► [Router 2] ──TTL=1──► [Router 3]
TTL=0 → scarta
→ traceroute scopre: hop 3 = questo IP ✅Output reale:
traceroute google.com
1 192.168.1.1 1ms ← il tuo router di casa
2 10.0.0.1 8ms ← router del tuo ISP
3 85.18.x.x 12ms ← backbone ISP
4 ...
8 142.250.x.x 20ms ← Google⚠️ TTL nel Networking vs TTL nel DNS — stessa parola, mondo diverso#
TTL NETWORKING TTL DNS
──────────────────── ────────────────────────────────
Unità: hop Unità: secondi
Si decrementa: Si decrementa:
ad ogni router nel tempo
Scopo: Scopo:
evitare loop infiniti dire ai server DNS quanto
tenere in cache il record
TTL=64 networking → il pacchetto può fare 64 hop
TTL=300 DNS → ricorda questo record per 300 secondiTTL DNS basso = propagazione veloce:
Stai per cambiare IP del tuo dominio:
Giorni prima → TTL = 86400 (normale, 24 ore)
Giorno prima → TTL = 300 (abbassi a 5 minuti)
Fai il cambio → i server DNS aggiornano in 5 minuti
Dopo il cambio → TTL = 86400 (rialzi)
Se non abbassi prima:
metà internet vede il vecchio IP per 24 ore
metà vede il nuovo
caos durante la migrazioneIl viaggio del pacchetto — MAC, IP e hop#
Questa e' la parte che confonde di piu': se i router instradano i pacchetti, perche' traceroute mostra IP e non MAC? E dove entra il MAC in tutto questo?
Due indirizzi, due scopi diversi#
IP → indirizzo logico — "dove vuoi arrivare"
non cambia mai durante il viaggio
visibile da tutti i router lungo il percorso
MAC → indirizzo fisico — "su quale cavo mandare il pacchetto adesso"
valido solo dentro una subnet (LAN)
cambia ad ogni hop
invisibile fuori dalla LANLa busta dentro la lettera#
Ogni pacchetto ha due "strati" di indirizzamento:
┌──────────────────────────────────────────┐
│ Header Ethernet (Layer 2) │
│ MAC sorgente: il mio MAC │ ← cambia ad ogni hop
│ MAC destinazione: MAC prossimo router │
├──────────────────────────────────────────┤
│ Header IP (Layer 3) │
│ IP sorgente: il mio IP │ ← invariato per tutto il viaggio
│ IP destinazione: IP server remoto │
├──────────────────────────────────────────┤
│ Payload (TCP/UDP/ICMP...) │
└──────────────────────────────────────────┘Il router legge l'header IP per decidere dove mandare il pacchetto. Poi riscrive l'header Ethernet con il suo MAC come sorgente e il MAC del prossimo router come destinazione. L'header IP non viene toccato.
Il viaggio completo verso Google (8.8.8.8)#
STEP 1 — sulla tua LAN (subnet 192.168.64.x)
Il tuo PC non conosce il MAC del router → ARP
ARP broadcast: "chi ha 192.168.64.1?"
Router risponde: "sono io — MAC aa:bb:cc:dd:ee:ff"
Pacchetto parte:
MAC src: il tuo MAC
MAC dst: MAC del router di casa ← solo per questo hop
IP src: 192.168.64.200
IP dst: 8.8.8.8 ← invariato
STEP 2 — router di casa riceve il pacchetto
Legge IP dst: 8.8.8.8
Guarda la tabella di routing: "per 8.8.8.8 mando al router ISP"
Sa il MAC del router ISP (ARP sulla sua interfaccia WAN)
Riscrive l'header Ethernet:
MAC src: MAC del router di casa
MAC dst: MAC del router ISP ← nuovo hop, nuovo MAC
STEP 3, 4, 5... — ogni router intermedio
Stessa logica: legge IP dst, decide prossimo hop, riscrive MAC
STEP FINALE — ultimo router prima di Google
MAC src: MAC dell'ultimo router
MAC dst: MAC del server 8.8.8.8 ← finalmente il destinatario
IP src: il tuo IP
IP dst: 8.8.8.8Perche' il MAC vale solo nella LAN#
Il MAC e' un indirizzo Layer 2 — funziona solo tra dispositivi sulla stessa subnet fisica. Non "esce" dalla LAN perche':
LAN A (192.168.1.x) Internet LAN B (10.0.0.x)
PC ──────► Router A ─────────────────── Router B ──────► Server
Tra PC e Router A: usano MAC (stessa LAN)
Tra Router A e B: usano solo IP (reti diverse, niente ARP)
Tra Router B e Server: usano MAC (stessa LAN)Tra due router su internet non c'e' ARP — ci sono protocolli di routing (BGP, OSPF) che usano solo IP per scambiarsi le tabelle di instradamento.
Come fa il router a sapere il MAC del prossimo hop#
Sulla sua interfaccia LAN: tramite ARP, esattamente come il tuo PC. Su internet tra router: i router "vicini" (peer) si conoscono tramite configurazione statica o protocolli di routing — anche li' pero' a livello fisico usano MAC per la comunicazione sul link diretto tra loro.
Cosa vedi in traceroute#
traceroute mostra gli IP, non i MAC — perche' usa ICMP Time Exceeded che e' un messaggio IP, non Ethernet. I MAC non escono mai dalla subnet locale — non possono essere trasmessi in un messaggio IP.
traceroute -n 8.8.8.8
1 192.168.64.1 ← router UTM (gateway LAN)
2 192.168.1.254 ← router di casa reale
3 192.168.128.1 ← primo router ISP
...
9 93.57.68.133 ← backbone internet
14 8.8.8.8 ← GoogleOgni riga e' un router che ha risposto con ICMP Time Exceeded. Il MAC di ognuno di questi router e' visibile solo al router precedente — mai a te.
MAC spoofing — solo sulla LAN#
Gli attacchi che falsificano il MAC (ARP poisoning, MAC spoofing) funzionano SOLO sulla stessa subnet perche' il MAC non viaggia oltre il primo router. Su internet non si puo' falsificare il MAC di un server remoto — il MAC non arriva mai cosi' lontano.
Attacchi MAC: solo LAN ✓
Attacchi IP: ovunque su internet ✓Scenario Reale#
Un analista SOC nota che alcune richieste verso un IP esterno non arrivano mai a destinazione — timeout continui. Lancia traceroute verso quell'IP: i primi 5 hop rispondono normalmente, poi silenzio. Il pacchetto si perde all'hop 6 — probabilmente un firewall che blocca il traffico o un router mal configurato. Senza traceroute avrebbe solo visto "non risponde" — con traceroute sa esattamente dove si rompe il percorso.
Dove l'ho incontrato#
- network-fundamentals — TryHackMe modulo 2
- icmp-mac-ip — ICMP Time Exceeded è il meccanismo base di traceroute
Collegato a#
- network — categoria
- icmp-mac-ip — TTL e ICMP Time Exceeded
- ping — usa TTL, mostra hop count
- ip-addressing-subnetting — routing tra subnet diverse
- osi-model — routing avviene a Layer 3




