Sistemi e Reti Anno 4 Modulo 2 Lezione 07 - ICMP, ping, traceroute e DHCP
Sistemi e Reti · Anno 4 · Modulo 2 · Lezione 07
✍ Autore: profgiagnotti · Materia: Sistemi e Reti

ICMP, ping, traceroute e DHCP

Il sistema di diagnostica di IP: messaggi di errore, misura della raggiungibilità, scoperta del percorso e configurazione automatica degli indirizzi da ARP a SLAAC.

📄 Esercizi protocolli ARP/ICMP
// obiettivi di apprendimento
✓Descrivere il ruolo di ICMP (RFC 792) e i suoi principali tipi di messaggio: Echo, Destination Unreachable, Time Exceeded.
✓Spiegare come funzionano ping e traceroute, interpretarne l'output e distinguerne l'implementazione Linux/Windows.
✓Comprendere ICMPv6 (RFC 4443), Protocol 58, Packet Too Big e il suo legame indissolubile con NDP.
✓Analizzare il processo DORA di DHCP: broadcast, lease time, opzioni 1/3/6/51/53 e relay agent.
✓Confrontare DHCP, DHCPv6 stateful/stateless e SLAAC: flag M/O in RA e best practice SLAC+stateless.

1. ICMP — Internet Control Message Protocol

IP è un protocollo di consegna best-effort: non garantisce che i pacchetti arrivino, non li riordina, non segnala gli errori al mittente. Come fa allora un router a comunicare che non riesce a instradare un pacchetto? Come fa un host a scoprire se la destinazione è raggiungibile?

Ci pensa ICMP (RFC 792). ICMP è il sistema di notifica degli errori e diagnostica di IP. Non trasporta dati utente, ma è essenziale per la gestione della rete.

// definizione formale

ICMP (Internet Control Message Protocol) è incapsulato direttamente in IP con numero di protocollo 1. Ogni messaggio ICMP ha campo Type (tipo), Code (sottotipo), checksum a 16 bit e dati specifici per tipo.

Formato del messaggio ICMP

// header ICMP generico
HEADER ICMP
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | (contenuto dipende dal tipo) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I messaggi ICMP principali

TypeCodeNomeUso
00Echo ReplyRisposta a un ping
30Destination Unreachable — NetRouter non trova rotta verso rete
31Destination Unreachable — HostRete ok, host non risponde
32Destination Unreachable — ProtocolProtocollo L4 non supportato
33Destination Unreachable — PortPorta UDP/TCP non in ascolto
34Fragmentation NeededPMTU Discovery — segnala MTU del link, DF settato
50-3RedirectSuggerisce gateway migliore
80Echo RequestRichiesta ping: "sei raggiungibile?"
110Time Exceeded — TTL ExceededTTL=0 → router scarta, base traceroute
111Time Exceeded — ReassemblyTimeout riassemblatura frammenti
120-2Parameter ProblemHeader IP malformato
⚠️ Nota importante

I messaggi ICMP di errore (tipo 3,5,11,12) includono sempre i primi 8 byte del payload originale che ha causato l'errore: header IP originale + prime 8 byte = header TCP/UDP → porte e seq number per identificare il pacchetto incriminato.

2. ping — Echo Request / Echo Reply

ping è lo strumento di diagnostica più usato. Invia ICMP Echo Request (Type 8) e attende Echo Reply (Type 0), misurando RTT e packet loss.

SHELL · PING
# Linux/macOS — esempio output $ ping -c 4 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.4 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=11.8 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=12.1 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=12.3 ms --- 8.8.8.8 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss rtt min/avg/max/mdev = 11.8/12.15/12.4/0.22 ms
  • icmp_seq: numero sequenziale inviato
  • ttl=118: TTL residuo. TTL iniziale di Google 128 → 128-118=10 hop percorsi (approx)
  • time: RTT andata+ritorno
  • 0% packet loss: affidabilità link
Opzioni ping utili

-c N → N pacchetti (Linux)
-n N → N pacchetti (Windows)
-s SIZE → dimensione payload
-t TTL → imposta TTL
-f → flood ping (root)
-M do → Don't Fragment (PMTUD)

Cosa puoi scoprire con ping

✓ Destinazione raggiungibile
✓ Latenza approssimativa
✓ Perdita pacchetti
✗ Non dice se servizio è attivo (porta chiusa ≠ host giù)
✗ Inutile se firewall blocca ICMP

3. traceroute — scoprire il percorso

traceroute (Linux/macOS) o tracert (Windows) mostra i router intermedi (hop) con RTT per ciascun hop.

Come funziona: il trucco del TTL

  1. Invia pacchetto con TTL=1. Primo router scarta (TTL=0) e risponde ICMP Time Exceeded. Registra IP e RTT.
  2. Invia con TTL=2. Secondo router risponde. E così via.
  3. Quando raggiunge destinazione, questa risponde Echo Reply (o Port Unreachable) e traceroute termina.
// esempio output traceroute
SHELL · TRACEROUTE
$ traceroute 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max 1 192.168.1.1 1.2 ms 1.1 ms 1.0 ms ← router di casa 2 10.0.0.1 8.3 ms 8.1 ms 8.2 ms ← primo router ISP 3 203.0.113.1 11.4 ms 11.2 ms 11.5 ms ← backbone ISP 4 72.14.204.68 12.0 ms 11.9 ms 12.1 ms ← rete Google 5 8.8.8.8 12.4 ms 11.8 ms 12.3 ms ← destinazione * * * = router che filtra ICMP o non invia Time Exceeded
// differenza Linux vs Windows

Linux/macOS usa di default pacchetti UDP porte alte (33434+). Destinazione risponde ICMP Port Unreachable (Type 3). Con -I usa ICMP Echo. Windows (tracert) usa sempre ICMP Echo Request, come ping con TTL incrementale.

4. ICMPv6 e integrazione con NDP

In IPv6, ICMP si chiama ICMPv6 (RFC 4443), Protocol Number 58. Non è solo un aggiornamento: ICMPv6 è fondamentale per IPv6, include NDP (visti in L06) e MLD. Bloccarlo completamente in firewall rompe la rete.

Type ICMPv6NomeEquiv. ICMPv4
1Destination UnreachableType 3
2Packet Too BigType 3 Code 4 — PMTUD in IPv6 (no frammentazione router)
3Time ExceededType 11
128Echo RequestType 8
129Echo ReplyType 0
133-137NDP: RS, RA, NS, NA, Redirect— sostituto ARP in IPv6
💡 Focus NDP

NDP usa solicited-node multicast FF02::1:FFxx:xxxx invece di broadcast ARP: più efficiente, meno interruzioni per host non interessati. Ricorda da L06: DAD utilizza NS con src :: .

5. DHCP — Configurazione dinamica degli indirizzi

Configurare manualmente IP, mask, gateway e DNS su ogni device sarebbe ingestibile. DHCP (Dynamic Host Configuration Protocol) automatizza tutto.

// definizione formale

DHCP (RFC 2131) è client-server a livello applicazione su UDP porte 67 server / 68 client: assegna IP, subnet mask, default gateway, DNS e altre opzioni.

6. Processo DORA e opzioni DHCP

La negoziazione avviene in 4 messaggi DORA:

// diagramma DORA
DIAGRAMMA DORA
CLIENT (0.0.0.0) SERVER (255.255.255.255) | | (1) |-------- DHCP DISCOVER (broadcast) ------->| | "Ho bisogno di IP! 0.0.0.0 -> 255.255.255.255" | | | (2) |<-------- DHCP OFFER (unicast/bcast) ------| | "Ti offro 192.168.1.100/24 GW:192.168.1.1 DNS:8.8.8.8" | | | (3) |-------- DHCP REQUEST (broadcast) -------->| | "Accetto 192.168.1.100 dal server 192.168.1.254" | | | (4) |<-------- DHCP ACK (unicast) --------------| | "Confermato. Lease: 24 ore" | | | [HOST CONFIGURA INTERFACCIA]
Perché Request in broadcast?

Possono esserci più server DHCP. Il client sceglie la prima offerta, ma avvisa tutti in broadcast: gli altri revocano proposte e rilasciano IP riservati.

Lease Time e rinnovo

Lease limitato (es. 86400s). Rinnovo a T/2 unicast al server. Se fallisce, ritenta a T*7/8 in broadcast. A scadenza IP rilasciato e DORA riparte.

Le opzioni DHCP più importanti

OptionNomeContenuto tipico
1Subnet Mask255.255.255.0
3Router (Default Gateway)192.168.1.1
6Domain Name Server8.8.8.8, 8.8.4.4
15Domain Namelocal o azienda.it
51Lease Time86400 (24 ore)
53DHCP Message Type1=Discover,2=Offer,3=Request,4=Decline,5=ACK,6=NAK,7=Release
54Server IdentifierIP del server offerente
82Relay Agent InformationAggiunto dal relay agent

DHCP Relay Agent

DHCP usa broadcast per Discover. I router non inoltrano broadcast. Come si fa con più subnet?

Il DHCP Relay Agent (ip helper-address in Cisco) intercetta broadcast DHCP, li incapsula in unicast e li inoltra al server centrale. Risposta torna al relay che consegna al client.

CISCO IOS · RELAY
# Configurazione relay agent su router Cisco IOS Router(config)# interface GigabitEthernet0/1 Router(config-if)# ip helper-address 10.0.0.10 ! IP del server DHCP

7. DHCP vs DHCPv6 vs SLAAC

MeccanismoProtocolloConfig automaticaServer?
DHCPIPv4IP, mask, GW, DNS, opzioniSì
SLAACIPv6IP (prefisso RA + EUI-64), default GWNo (NDP/RA)
DHCPv6 StatefulIPv6IP, DNS, opzioni (come DHCP)Sì
DHCPv6 StatelessIPv6Solo DNS + opzioni extra (IP da SLAAC)Sì (solo opzioni)

I flag nel Router Advertisement (M-bit: Managed address config e O-bit: Other config) indicano se usare SLAAC, DHCPv6 stateful o stateless.

✅ Best practice IPv6

Nelle reti aziendali IPv6 moderne si usa spesso SLAAC + DHCPv6 stateless: l'host ottiene IP autonomamente (nessun server per IP), ma riceve DNS e opzioni via DHCPv6. Riduce dipendenza dal server, mantenendo centralizzazione opzioni critiche.

QUIZ · CHECK
1. Perché ICMP Type 3 include i primi 8 byte del payload originale? 2. ping: cosa indica ttl=118? E 0% packet loss? 3. Spiega differenza tra traceroute Linux UDP e Windows ICMP. 4. Descrivi DORA: perché Discover e Request sono broadcast? 5. Calcola rinnovo lease con T=24h: quando T/2 e T*7/8? 6. Flag M=1 O=0 in RA: cosa deve fare l'host IPv6? 7. Come si usa ip helper-address per permettere DHCP cross-VLAN?
✓ICMP (RFC 792, Prot=1) segnalazione errori e diagnostica. Type+Code. Header include checksum. Dati errore portano IP+8 byte originali per identificare flusso.
✓ping Type 8/0 misura RTT e perdita. TTL residuo stima hop. Non verifica servizio (porta) e fallisce se ICMP filtrato.
✓traceroute TTL incrementale: ogni router con TTL=0 risponde ICMP Time Exceeded Type 11. Linux UDP 33434+, Windows ICMP Echo. * * * = filtro.
✓ICMPv6 Prot 58: Type 2 Packet Too Big = frag. Needed senza frammentazione router. Type 133-137 = NDP. Non bloccarlo!
✓ICMP Type 3 Code 4 PMTUD: router notifica MTU link se DF=1, sorgente ridimensiona pacchetti.
✓DHCP DORA su UDP 67/68: Discover broadcast → Offer → Request broadcast → ACK. Lease con rinnovo T/2 unicast, T*7/8 broadcast. Opzioni chiave 1,3,6,51,53.
✓Relay Agent: risolve limite broadcast inter-VLAN con ip helper-address.
✓IPv6 config: SLAAC autonomo (RA→prefisso+EUI-64) vs DHCPv6 stateful (IP+opzioni) vs stateless (solo opzioni). Flag M/O in RA. Best practice: SLAAC+stateless.

📚 Prossimo passo — Progettazione LAN, modello gerarchico e STP

Dopo i protocolli di diagnostica e configurazione, vedremo come progettare una LAN enterprise: modello a tre livelli, ridondanza e Spanning Tree Protocol per evitare loop L2.