Salta al contenuto
Note per Studenti Protocollo ICMP

Protocollo ICMP

In questa pagina 5
In questa pagina 5

IPv4 (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →) non ha un meccanismo per segnalare e correggere gli errori e manca di meccanismi per le richieste di informazioni sugli host e per la gestione della rete. L'ICMP (Internet Control Message Protocol) è stato progettato per colmare queste due lacune. Si affianca a IP ed è esso stesso un protocollo del livello di rete (insieme a IP, ARP e IGMP: Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →).

I suoi messaggi però non vanno direttamente al livello di collegamento, come ci si aspetterebbe: sono prima incapsulati dentro datagrammi IP con il campo Protocol uguale a 11. In questo senso ICMP sta "dentro" IP (è nel payload) ma anche "sopra" IP (i messaggi di errore contengono una parte del pacchetto IP sbagliato).

Due categorie di messaggi

  • Messaggi di errore (error-reporting): segnalano i problemi che un router o l'host destinatario incontra nell'elaborare un pacchetto IP. Sono sempre inviati alla sorgente originale, perché le sole informazioni sul percorso contenute nel datagramma sono gli indirizzi IP di sorgente e destinazione. Attenzione: ICMP non corregge gli errori, li segnala soltanto.
  • Messaggi di interrogazione (query, con richiesta e risposta): aiutano un host a ottenere informazioni specifiche da un router o da un altro host. Servono a verificare se un host o un router è attivo (liveness) e a misurare il tempo di andata e ritorno (RTT) di un datagramma IP tra due dispositivi.

Regole per i messaggi di errore (per non innescare tempeste di errori):

  • nessun messaggio ICMP in risposta a un datagramma che contiene un messaggio ICMP;
  • nessun messaggio ICMP per un datagramma frammentato che non sia il primo frammento;
  • nessun messaggio ICMP per un datagramma con indirizzo multicast;
  • nessun messaggio ICMP per un datagramma con indirizzo speciale, come 127.0.0.0127.0.0.0.
categoria messaggio tipo (codici)
errore destination unreachable 3 (0-15)
errore time exceeded 11 (0-1)
errore redirect 5
errore parameter problem 12 (0-1)
interrogazione echo request / echo reply 8 / 0
interrogazione timestamp request / reply 13 / 14

Il contenuto dei messaggi di errore

Tutti i messaggi di errore hanno una sezione dati che contiene:

  • l'intestazione IP del datagramma originale (quello che ha causato l'errore), per dire alla sorgente di quale datagramma si tratta;
  • i primi 8 byte di dati di quel datagramma: contengono i numeri di porta e il numero di sequenza (informazioni del livello di trasporto), per avvisare TCP o UDP dell'errore.

ICMP forma così un pacchetto di errore che viene incapsulato in un datagramma IP: l'intestazione ICMP (tipo, codice, checksum, campo non usato di 16 bit a zero) è seguita da "intestazione IP originale + 64 bit di dati".

Messaggi di errore

Destination unreachable (tipo 3)

È il messaggio d'errore più usato. In generale, quando un pacchetto viene scartato, un messaggio di errore ICMP ritorna alla sorgente. Usa codici da 0 a 15 per indicare perché il datagramma non ha raggiunto la destinazione finale.

codice significato
0 rete non raggiungibile
1 host non raggiungibile
2 protocollo non raggiungibile (il protocollo di trasporto indicato non è supportato)
3 porta non raggiungibile (il protocollo non può avvisare il processo del messaggio in arrivo)
4 il datagramma è troppo grande: serve la frammentazione, ma il bit don't fragment (D) è attivo
5 instradamento dalla sorgente fallito
6 rete di destinazione sconosciuta
7 host di destinazione sconosciuto
8 host sorgente isolato
9 rete di destinazione amministrativamente vietata
10 host di destinazione amministrativamente vietato
11 rete non raggiungibile per il tipo di servizio
12 host non raggiungibile per il tipo di servizio
13 comunicazione amministrativamente vietata (un filtro impedisce l'inoltro)
14 violazione della precedenza dell'host
15 precedenza tagliata (la precedenza del datagramma è sotto il livello fissato dagli amministratori)

Formato: tipo (3), codice (0-15), checksum, 16 bit non usati (a zero), next-hop MTU (solo se il codice è 4, altrimenti tutti zeri), intestazione IP e primi 64 bit del datagramma che ha causato il problema. Quando il codice è 4, il next-hop MTU dice alla sorgente la dimensione da usare (vedi la scoperta dell'MTU più sotto).

Time exceeded (tipo 11)

Parameter problem (tipo 12)

  • Codice 0: l'intestazione IP contiene un campo malformato (viola il formato); il messaggio contiene un puntatore (pointer) al campo dell'intestazione che ha generato il problema.
  • Codice 1: un'opzione è sconosciuta o un'operazione non può essere eseguita.

Esempio. Arriva un pacchetto IPv4 il cui primo byte è 01000010201000010_2. Il ricevitore lo scarta: i primi 4 bit (0100=40100=4) sono la versione, corretta; i successivi 4 (0010=20010=2) sono HLen, cioè 2⋅4=8<202\cdot4=8<20 byte, un valore impossibile: il pacchetto è stato corrotto in trasmissione.

Redirect (tipo 5)

I router aggiornano di continuo le informazioni di instradamento, gli host no: non partecipano ai protocolli di instradamento. Un host HH vuole mandare un pacchetto a TT e la sua tabella dice di inviarlo al router R1R_1. Ma l'informazione di R1R_1 è stata aggiornata: ora R1R_1 dovrebbe inoltrare a R2R_2 per raggiungere TT. Siccome R2R_2 e HH sono nella stessa rete, HH potrebbe mandare direttamente a R2R_2. R1R_1 avverte HH di aggiornare la sua tabella con un messaggio ICMP redirect (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).

Messaggi di interrogazione

Echo

L'echo request (tipo 8) e l'echo reply (tipo 0) servono a un host o router per verificare se un altro nodo è attivo. Un host o router invia un echo request a un altro; se questo è attivo risponde con un echo reply.

  • Il campo identifier è scelto dal mittente e la risposta lo replica.
  • Il campo sequence number parte da 0 e aumenta di 1 a ogni nuovo messaggio.
  • Optional data: il mittente può aggiungere dati, che la risposta replica.

Formato: tipo (8 o 0), codice (0), checksum, identifier, sequence number, optional data.

Formula (checksum ICMP). Come per IP: complemento a uno della somma in complemento a uno delle parole da 16 bit del messaggio, con il campo checksum posto a 0 durante il calcolo.

Esempio. Echo request di tipo 8, codice 0, identifier 1234\texttt{1234}, sequence number 0001\texttt{0001}, dati "ab" (6162\texttt{6162}). Parole: 0800, 0000, 1234, 0001, 6162\texttt{0800},\ \texttt{0000},\ \texttt{1234},\ \texttt{0001},\ \texttt{6162}. Somma passo per passo (in esadecimalele cifre vanno da 0 a 9 e da A a F, con A=10 fino a F=15, e ogni cifra vale 4 bitBasi di numerazione e conversioni - binario, ottale ed esadecimale →): 0800+0000=0800\texttt{0800}+\texttt{0000}=\texttt{0800}; +1234=1A34+\texttt{1234}=\texttt{1A34} (infatti 8+2=A8+2=\texttt{A} nella terza cifra); +0001=1A35+\texttt{0001}=\texttt{1A35}; +6162=7B97+\texttt{6162}=\texttt{7B97} (cifra per cifra da destra: 5+2=75+2=7, 3+6=93+6=9, A+1=B\texttt{A}+1=\texttt{B}, 1+6=71+6=7). Nessun riporto oltre i 16 bit, quindi non c'è nulla da riportare. Checksum =7B97‾=FFFF−7B97=8468=\overline{\texttt{7B97}}=\texttt{FFFF}-\texttt{7B97}=\texttt{8468} (si nega ogni bit; cifra per cifra F−7=8\texttt{F}-\texttt{7}=\texttt{8}, F−B=4\texttt{F}-\texttt{B}=\texttt{4}, F−9=6\texttt{F}-\texttt{9}=\texttt{6}, F−7=8\texttt{F}-\texttt{7}=\texttt{8}). Il metodo è lo stesso del checksum IP, con il complemento a uno spiegato in Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →. Alla ricezione, sommando anche il checksum: 7B97+8468=FFFF\texttt{7B97}+\texttt{8468}=\texttt{FFFF}, quindi il messaggio è integro.

Ping per misurare l'RTT

Il programma ping invia messaggi echo request; la destinazione, se attiva, risponde con echo reply. ping imposta l'identifier negli echo request e reply, parte da sequence number 0 e lo incrementa a ogni invio. Inserisce nella sezione dati l'istante di invio: quando il pacchetto torna, sottrae l'istante di partenza da quello di arrivo e ottiene l'RTT. Il programma mostra, per ogni risposta, il nome o l'indirizzo, il numero di sequenza, il TTL residuo dell'echo reply, il tempo tra request e reply (RTT) e i pacchetti persi.

Ping per scoprire l'MTU del cammino

Si manda un messaggio di una certa dimensione con il bit D (don't fragment) acceso; se la sorgente riceve un messaggio ICMP "destination unreachable" con codice 4 ("fragmentation required with don't fragment flag set") riduce la dimensione e riprova. Quando il messaggio viene consegnato, l'MTU è la dimensione corrente. Esempio di comando per l'MTU verso unipd.it: ping -D -s 1500 unipd.it (-s = numero di byte di dati, per default 56, che con l'intestazione ICMP di 8 byte fanno 64 byte ICMP).

Esempio (la ricerca passo per passo). La sorgente ha MTU 1500 e sul cammino c'è un collegamento con MTU 14001400. (1) Invia un echo request con 14721472 byte di dati: il datagramma IP è 1472+8+20=15001472+8+20=1500 byte, con D acceso. (2) Il router davanti al collegamento stretto non può né inoltrarlo (1500>14001500>1400) né frammentarlo (D=1): lo scarta e manda destination unreachable codice 4 con next-hop MTU =1400=1400. (3) La sorgente ricalcola i dati utili: 1400−20−8=13721400-20-8=1372 byte, e rimanda; ora il pacchetto passa e l'MTU del cammino è 14001400. Senza il campo next-hop MTU (router vecchi) si procede a tentativi, riducendo la dimensione a ogni errore.

Esempio (quale dimensione ci si aspetta). L'interfaccia locale è Ethernet o Wi-Fi: MTU 1500 byte. L'intestazione IP è di 20 byte, quindi il pacchetto ICMP al massimo 1500−20=14801500-20=1480 byte; l'intestazione ICMP è di 8 byte, quindi i dati al massimo 1480−8=14721480-8=1472 byte. Con la dimensione di default: 56+8=6456+8=64 byte di ICMP, 64+20=8464+20=84 byte di datagramma IP.

Ping e destination unreachable nel laboratorio

Nella rete del laboratorio 2 (routing statico, Routing statico in KatharàLaboratorio 2 (LAB2). Due LAN (195.11.14.0/24 e 200.1.1.0/24) sono unite da due router r1 e r2 collegati da una rete 100.0.0.8/30. Una interfaccia attiva inserisce da sola nella tabella di instradamento solo la rete direttamente collegata: per le altre servono rotte inserite a mano. I PC usano una rotta predefinita (route add default gw 195.11.14.1), i router rotte statiche (route add -net 195.11.14.0/24 gw 100.0.0.9 dev eth1). Senza la rotta di ritorno su r2 le richieste di ping arrivano ma le risposte no: la raggiungibilità vale solo se c'è un percorso in entrambi i versi. A configurazione finita ping da pc1 a pc2 risponde con ttl=62 (64 meno 2 router).Routing statico in Katharà →) pcA=192.168.20.1/24\text{pc}_A=192.168.20.1/24, pcB=192.168.20.193/28\text{pc}_B=192.168.20.193/28, pcC=192.168.20.206/28\text{pc}_C=192.168.20.206/28, pcD=192.168.20.254/24\text{pc}_D=192.168.20.254/24. Il ping da A a D funziona. Il ping da A a B dà destination unreachable. Il ping da B ad A dà network unreachable (non c'è una rotta verso la rete di destinazione: per B, con maschera /28 e rete 192.168.20.192/28192.168.20.192/28, l'indirizzo 192.168.20.1192.168.20.1 è fuori dalla propria rete); il messaggio sparisce aggiungendo la rotta con route add -net 192.168.20.0/24 dev eth0. Il caso mostra che la scelta delle maschere e delle rotte decide quale errore si vede: host o destinazione non raggiungibile quando la consegna fallisce, rete non raggiungibile quando manca la rotta (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).

Traceroute

traceroute scopre il cammino dalla sorgente alla destinazione e fa alcune misure, aiutandosi con due messaggi di errore: time exceeded e destination unreachable. È un programma di livello applicazione, ma serve solo la parte client: i suoi messaggi sono costruiti per non raggiungere mai il livello applicazione dell'host di destinazione. I messaggi di traceroute sono incapsulati in pacchetti UDP (livello 4), ma con un numero di porta di proposito non disponibile sulla destinazione.

Se ci sono nn router nel cammino, traceroute manda n+1n+1 messaggi. L'idea è di mandare messaggi che generano errori e usare gli n+1n+1 messaggi ICMP di errore ricevuti per ricostruire il cammino:

  1. il primo messaggio ha TTL =1=1: viene scartato dal primo router, che invia un time exceeded; dall'indirizzo sorgente del messaggio di errore traceroute ricava l'IP del primo router (e il nome del router è nella sezione dati);
  2. il secondo ha TTL =2=2, e fa trovare IP e nome del secondo router, e così via;
  3. a un certo punto il messaggio raggiunge l'host di destinazione, che manda un destination unreachable con codice 3 (porta non trovata): la ricerca è finita.

Perché funziona: il TTL viene decrementato da ogni router (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →) e il router che lo porta a 0 scarta il pacchetto e avvisa la sorgente con un messaggio che porta il proprio indirizzo IP come sorgente. Con TTL =k=k il pacchetto "muore" esattamente al kk-esimo router, che si rivela. L'ultimo messaggio non genera time exceeded perché arriva a destinazione con TTL ancora ≥1\ge1; la porta UDP è volutamente inesistente, quindi l'host destinatario risponde destination unreachable codice 3, che segnala la fine. Con nn router intermedi servono n+1n+1 sonde (TTL da 1 a n+1n+1): per n=2n=2 sono 33 sonde, e traceroute ne invia di solito tre per ogni valore di TTL (quindi 3(n+1)=93(n+1)=9 pacchetti) per avere tre misure di RTT per salto. Il tempo stampato per un salto è l'RTT fino a quel router, non il ritardo del solo collegamento: il ritardo del tratto k→k+1k\to k+1 si stima come differenza dei due RTT, e per questo può uscire anche negativo se il router kk era momentaneamente più lento.

Esempio. traceroute fhda.edu mostra tre salti: il primo router è Dcore.fhda.edu (153.18.31.254153.18.31.254) con tempi 0,9950{,}995, 0,8990{,}899, 0,8780{,}878 ms (tre sonde per salto); il secondo Dbackup.fhda.edu (153.18.251.4153.18.251.4); il terzo, tiptoe.fhda.edu (153.18.8.1153.18.8.1), è la destinazione. In un caso con 18 salti i tempi possono non crescere regolarmente (un router occupato risponde tardi). Se non arriva risposta entro 5 secondi traceroute stampa un asterisco e passa al salto successivo (righe * * *).

Attacchi con ICMP

  • Smurf. ICMP può servire a un attacco di negazione del servizio. L'attaccante manda un echo request all'indirizzo di broadcast di una rete, con l'indirizzo sorgente falsificato (spoofed) uguale a quello della vittima. Tutti gli host rispondono con echo reply alla vittima, che viene sommersa dalle risposte ICMP e rallenta o va fuori servizio. Oggi è raramente usato, grazie ai miglioramenti nelle reti.
  • Redirect. È possibile falsificare i messaggi redirect: il router legittimo manda il redirect alla vittima, l'attaccante lo imita mettendo l'indirizzo di un router malevolo; la vittima userà il falso gateway per raggiungere una certa destinazione, e l'attaccante può leggere o modificare i dati.

Versione ripasso

IPv4 (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →) non segnala né corregge gli errori e non ha richieste di informazioni: li fornisce l'ICMP (Internet Control Message Protocol), protocollo del livello di rete (Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →), incapsulato dentro datagrammi IP con Protocol =1=1.

Categorie e regole

  • Errore: segnala i problemi di un router o della destinazione, sempre alla sorgente originale. ICMP non corregge, segnala soltanto.
  • Interrogazione (richiesta e risposta): nodo attivo (liveness), RTT.
  • Nessun errore per: datagramma con un messaggio ICMP, frammento non iniziale, multicast, indirizzo speciale.
categoria messaggio tipo (codici)
errore destination unreachable 3 (0-15)
errore time exceeded 11 (0-1)
errore redirect 5
errore parameter problem 12 (0-1)
interrogazione echo request / reply 8 / 0
interrogazione timestamp request / reply 13 / 14
  • Contenuto dei messaggi di errore: intestazione ICMP (tipo, codice, checksum, 16 bit non usati a zero) + intestazione IP originale + primi 8 byte di dati.

Messaggi di errore

Messaggi di interrogazione

  • Echo (request 8, reply 0, codice 0): identifier scelto dal mittente e replicato, sequence number da 0 e +1+1 a ogni messaggio, dati opzionali replicati.

Checksum ICMP: come IP, complemento a uno della somma in complemento a uno delle parole da 16 bit, con il campo checksum a 0 nel calcolo.

Traceroute

  • Scopre il cammino con time exceeded e destination unreachable; solo parte client, messaggi in UDP su una porta non disponibile nella destinazione. Con nn router servono n+1n+1 messaggi.
    1. TTL =1=1: il primo router scarta e risponde time exceeded; dall'indirizzo sorgente si ricava il suo IP;
    2. TTL =2=2, e così via;
    3. la destinazione risponde destination unreachable codice 3 (porta non trovata): fine.
  • Esempio traceroute fhda.edu: 3 salti, l'ultimo tiptoe.fhda.edu (153.18.8.1153.18.8.1) è la destinazione. Nessuna risposta in 5 s: asterisco.

Attacchi

  • Smurf: echo request all'indirizzo di broadcast con sorgente falsificata = vittima; tutti rispondono alla vittima, che va in negazione del servizio.
  • Redirect falso: l'attaccante imita il redirect con l'indirizzo di un router malevolo; la vittima usa il falso gateway.
  • Errori tipici: credere che ICMP corregga gli errori, rispondere con un errore a un messaggio ICMP.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata