...

ICMP - Dipartimento di Informatica

by user

on
Category: Documents
36

views

Report

Comments

Transcript

ICMP - Dipartimento di Informatica
Internet Control Message
Protocol
I semestre 03/04
Š Comunica messaggi di errore o altre situazioni
ICMP
che richiedono intervento
„
„
Prof. Vincenzo Auletta
„
[email protected]
http://www.dia.unisa.it/professori/auletta/
„
Š Messaggi ICMP sono incapsulati all’interno di
datagrammi IP
„
Università degli studi di Salerno
Laurea in Informatica
2
errori
„
segnalato
alla
sorgente
del
specifica
messaggio
intermedio
„
La sorgente deciderà come intervenire
„
3
ai
router
attraversati
„
dal
Nell’header del datagram c’è solo l’indirizzo della
sorgente
ulteriormente
il
tipo
di
1 byte
Š checksum (sull’intero messaggio ICMP)
Š ICMP non può essere utilizzato per inviare
informazioni
datagramma
Messaggio
1 byte
Š code:
Š la segnalazione è inviata dalla destinazione o da un router
„
Š Protocollo definito nell’RFC 792
Š type: identifica messaggio ICMP
Š ICMP è un protocollo per la segnalazione degli
L’errore viene
datagramma
devono viaggiare all’interno dell’interrete
Struttura di un
ICMP
Segnalazione degli Errori
„
Errore di indirizzo o di istradamento
Congestione in un router
Richiesta informazioni
Cambiamento in una tavola di routing
2 byte
Š data: dipende dal messaggio
„
4
contiene IP header (20 byte) + primi 8 byte di dati
del datagramma IP che ha generato il msg
Categorie di Messaggi ICMP
Messaggi di Errore
Š Due categorie di messaggi
„
„
Š Un messaggio di errore ICMP non viene generato
Messaggi di errore
Messaggi di richiesta informazioni
mai come risposta a:
„
„
Š Messaggi di errore sono gestiti dai router
diversamente dai messaggi di richiesta
„
„
„
Un messaggio di errore ICMP
Un datagram IP destinato ad un indirizzo broadcast o
multicast
Un broadcast di link layer
Un frammento diverso dal primo
Un datagram generato dall’indirizzo di loopback
Š Serve per evitare broadcast storming
5
6
Tipi di Messaggi ICMP
0
3
4
5
8
9
10
11
12
13-14
15-16
7 17-18
echo reply
destinazione irraggiungibile
source quench
redirect (cambio di percorso)
echo request
annuncio di un router
sollecitazione dei router
tempo scaduto per un datagram
errore nell’header IP
timestamp request/reply
information request/reply (obsoleta)
address mask request/reply
Codici di Messaggi ICMP
Š Ogni tipo di messaggio è ulteriormente
specificato dal campo code
Š Ad esempio il tipo di messaggio 3 (destinazione
irrangiugibile) ha i seguenti codici
8
0
1
2
3
4
6-7
8
9-10
rete irraggiungibile
host irraggiungibile
protocollo irraggiungibile
porta irraggiungibile
frammentazione necessaria e DNF settato
rete o host di destinazione ignoti
host destinazione isolato
comunicazione con rete o host di destinazione vietata
11-12
rete o host irragiungibile per tipo di servizio
Richiesta Subnet Mask
Richiesta Timestamp
Š Ogni host ha un indirizzo IP ed una subnet
Š Consente di ottenere informazioni
mask
„
„
Sistemi diskless usano RARP
l’indirizzo IP al boot
RARP non prevede il subnetting
Type (17-18)
del sistema destinazione
recuperare
„
„
Checksum
Code (0)
Identificatore
per
Usato per sincronizzare sistemi diversi
Poco usato perché esistono altre tecniche più
sofisticate
Type (13-14) Code (0)
Numero di sequenza
Identificatore
subnet mask
Checksum
Numero di sequenza
inserito dal sender
timestamp origine
Š Identifier e Sequence Number permettono di associare
le risposte alle richieste
9 Š Nella richiesta Subnet Mask è 0.0.0.0
timestamp ricezione
inseriti dal receiver
timestamp trasmissione risposta
10
sul clock
Calcolo dell’Orario
Formato Messaggi di Errore
Š Ogni timestamp è indicato in millisecondi a partire dalla
Š Ogni messaggio di errore di ICMP contiene un
campo dati con informazioni sul pacchetto che
ha generato l’errore
mezzanotte UTC
Š Round Trip Time = tempo trascorso dall’invio del
messaggio alla ricezione della risposta
richiesta
„
Header datagramma IP
Š identifica il protocollo che ha inviato i dati
risposta
„
Primi 8 byte campo dati del datagramma
Š contengono l’header del pacchetto del protocollo di
trasporto
Š numero di porta dell’applicazione interessata
RTT
il sender per sincronizzarsi con il receiver deve modificare
il suo clock di
(RecTime-OrigTime) – RTT/2
RecTime – TransTime da una misura del tempo di
11
elaborazione del pacchetto al receiver
Type
Code
Checksum
inutilizzato
12
IP header + 8 byte dati
Errore di Destinazione
Irragiungibile
Errore di Tempo Scaduto
Š Pacchetto inviato da un router quando non
Š Pacchetto inviato da un router quando riceve
un datagramma con TTL <= 1
riesce a istradare un datagram
„
Il campo code spiega per quale motivo non è stato
possibile istradare
„
„
„
Type (3)
Code (0-12)
Avverte la sorgente che il pacchetto si è perso
La destinazione accetta il datagramma
il code specifica perché il datagramma è stato
soppresso
Š
Š
Checksum
inutilizzato
0 = TTL scaduto
1 = superato il tempo di attesa nel riassemblaggio dei
frammenti
Type (11)
IP header + 8 byte dati
13
Code (0-1)
Checksum
inutilizzato
14
IP header + 8 byte dati
Errore nell’Header del
Datagram IP
Messaggio di Blocco della
Sorgente
Š Errore non previsto dal protocollo ICMP
Š Il messaggio di Source Quench è usato da un router per
„
„
avvertire la sorgente di una situazione di congestione
Puntatore indica l’ottetto errato nell’header del
datagram IP
Code 1 indica che manca un’opzione necessaria
„
„
in genere spedito per ogni datagram perso
alcuni router usano tecniche più sofisticate di controllo del
flusso
Š (es. avviso inviato quando la memoria è piena al 90%)
Š La sorgente dovrebbe sospendere la trasmissione
„
Type (12)
Puntatore
Code (0-1)
Checksum
inutilizzato
Type (4)
IP header + 8 byte dati
15
in realtà si limita a ridurre il tasso di trasmissione
Code (0)
Checksum
inutilizzato
16
IP header + 8 byte dati
Messaggio di Cambio del
Percorso
Messaggio di Identificazione dei
Router
Š Utilizzato da un host per identificare almeno un
Il messaggio di Route Change Request è inviato da un
router per avvertire la sorgente che esiste un percorso
migliore per la destinazione
Š
„
„
„
router all’interno della rete fisica
„
La sorgente dovrebbe aggiornare la propria tabella di routing
Consente di inizializzare la tabella di routing con informazioni
minime e aggiornarla on-line
la redirezione può essere richiesta per una rete, un host o un
tipo di servizio
Š I router periodicamente inviano il messaggio per
farsi identificare e segnalare che sono attivi (in
genere ogni 10 minuti)
„
Type (5)
Code (0-3)
consente all’host di non dover memorizzare una
tabella di routing
Checksum
la segnalazione scade dopo un certo tempo (in
genere 30 minuti)
indirizzo del router sulla nuova rotta
17
IP header + 8 byte dati
18
Messaggio di Sollecitazione dei
Router
Richiesta e Risposta Echo
Š Utilizzato da un host per sollecitare i router ad
Š Usato per controllare se un sistema è attivo e
inviare il messaggio di identificazione
„
raggiungibile
utile se l’host non può aspettare i 10 minuti che
passano tra due messaggi di identificazione
successivi
„
„
Il messaggio di risposta è associato ad una
richiesta con lo stesso identificatore e lo stesso
numero di sequenza
Dati opzionali usati per controllo
Type (8 o 0)
Type (10)
Code (0)
Checksum
identificatore
inutilizzato
19
Code (0)
Checksum
Numero di sequenza
dati opzionali
20
Applicazione Ping
Š L’applicazione
ping serve
raggiungibilità di un host
„
„
„
Ouput di ping
a
verificare
la
Š ping invia messaggi echo-request a intervalli
fissati e fornisce in output le informazioni
estratte dal messaggio echo-replay
Š Output:
Indirizzo corretto
Istradamento corretto
Destinazione attiva
„
Š Invia messaggi ICMP echo request ed aspetta
messaggi ICMP echo reply
„
„
„
„
Identificatore = PID
Numero di sequenza = incrementato ogni volta
„
„
„
21
22
Esempio Ping su LAN
Analisi con Tcpdump
PING spargi.dia.unisa.it (192.41.218.128): 56 data bytes
64 bytes from 192.41.218.128: icmp_seq=0 ttl=255 time=16.690 ms
64 bytes from 192.41.218.128: icmp_seq=1 ttl=255 time=14.101 ms
64 bytes from 192.41.218.128: icmp_seq=2 ttl=255 time=10.755 ms
64 bytes from 192.41.218.128: icmp_seq=3 ttl=255 time=16.586 ms
64 bytes from 192.41.218.128: icmp_seq=4 ttl=255 time=8.439 ms
64 bytes from 192.41.218.128: icmp_seq=5 ttl=255 time=0.805 ms
64 bytes from 192.41.218.128: icmp_seq=6 ttl=255 time=0.977 ms
64 bytes from 192.41.218.128: icmp_seq=7 ttl=255 time=0.891 ms
tcpdump: listening on eth0
10:30:48.278125 ustica.dia.unisa.it
echo request
10:30:48.278711 spargi.dia.unisa.it
echo reply
10:30:49.290019 ustica.dia.unisa.it
echo request
10:30:49.290581 spargi.dia.unisa.it
echo reply
--- spargi.dia.unisa.it ping statistics --8 packets transmitted, 8 packets received, 0% packet loss
round-trip min/avg/max = 0.805/8.655/16.690 ms
23
Dimensione messaggio
Indirizzo IP di chi ha spedito l’echo-reply
Numero di sequenza
Time To Live
Round Trip Time
Statistiche complessive
24
> spargi.dia.unisa.it: icmp:
> ustica.dia.unisa.it: icmp:
> spargi.dia.unisa.it: icmp:
> ustica.dia.unisa.it: icmp:
Esempio Ping su WAN
Opzione Record Route
Š Applicazione ping con opzione R restituisce la
PING ftp.unina.it (192.132.34.17): 56 data bytes
64 bytes from 192.132.34.17: icmp_seq=0 ttl=60 time=7.604 ms
64 bytes from 192.132.34.17: icmp_seq=1 ttl=60 time=8.597 ms
64 bytes from 192.132.34.17: icmp_seq=2 ttl=60 time=64.169 ms
64 bytes from 192.132.34.17: icmp_seq=3 ttl=60 time=8.669 ms
64 bytes from 192.132.34.17: icmp_seq=4 ttl=60 time=14.020 ms
64 bytes from 192.132.34.17: icmp_seq=5 ttl=60 time=9.006 ms
64 bytes from 192.132.34.17: icmp_seq=6 ttl=60 time=5.684 ms
64 bytes from 192.132.34.17: icmp_seq=7 ttl=60 time=7.532 ms
64 bytes from 192.132.34.17: icmp_seq=8 ttl=60 time=10.463 ms
64 bytes from 192.132.34.17: icmp_seq=9 ttl=60 time=7.280 ms
64 bytes from 192.132.34.17: icmp_seq=10 ttl=60 time=9.817 ms
lista dei router attraversati dal messaggio
„
Š Ogni router attraversato da un datagramma IP
con opzione RR abilitata aggiunge nel campo
opzione dell’header l’indirizzo dell’interfaccia di
rete su cui viene spedito il datagram
--- ftp.unina.it ping statistics --11 packets transmitted, 11 packets received, 0% packet loss
round-trip min/avg/max = 5.684/13.894/64.169 ms
25
27
Utilizza opzione Record Route di IP
„
differente dall’interfaccia su cui si è ricevuto il
datagram
26
Esempio ping con RR su LAN
Esempio ping con RR su WAN
PING spargi.dia.unisa.it (192.41.218.128):
56 data bytes
64 bytes from 192.41.218.128: icmp_seq=0
ttl=255 time=1.322 ms
RR: ustica.dia.unisa.it (192.41.218.37)
spargi.dia.unisa.it (192.41.218.128)
spargi.dia.unisa.it (192.41.218.128)
ustica.dia.unisa.it (192.41.218.37)
64 bytes from 192.41.218.128: icmp_seq=1
ttl=255 time=0.778 ms (same route)
PING ftp.unina.it (192.132.34.17): 56 data bytes
64 bytes from 192.132.34.17: icmp_seq=0 ttl=56
time= 165.096 msec
RR:
ustica.dia.unisa.it (192.41.218.37)
6000-bar.unisa.it (193.205.160.125)
bar-gw-s1.unisa.it (193.205.190.37)
193.205.190.250
6000-gw.unisa.it (193.205.190.41)
unisa-rc.na.garr.net (193.206.130.130)
rc-unina.na.garr.net (193.206.130.5)
garr-gw-na2.unina.it (192.133.28.253)
garr-gw-na1.cds.unina.it (192.132.34.254)
28
Applicazione Traceroute
Vantaggi di Traceroute
Š traceroute è usato per scoprire una rotta tra
Š Traceroute non richiede che il server implementi
due host
Š Risolve i seguenti svantaggi di ping con opzione
RR
„
„
„
nessuna applicazione speciale
Š I pacchetti di traceroute non sono incapsulati
dentro un datagram IP
opzione RR non sempre implementata da router
lista duplicata (andata e ritorno)
RR ha spazio per soli 9 indirizzi (4 contando andata e
ritorno)
29
„
Viaggiano in datagram UDP
30
Funzionamento di Traceroute
Funzionamento di Traceroute
Š Spedisce datagramma UDP indirizzato a porta >
Š Basato su ICMP e campo TTL (time to live)
30.000
Š Datagramma con ttl=1
dell’header IP
Š ...TRUCCO:
„
„
„
„
ogni router decrementa il valore di 1
datagramma con TTL=0,1 non è inoltrato ma è
generato messaggio ICMP “time exceeded”
Il messaggio ICMP contiene l’indirizzo IP del router
che lo ha spedito
primo router decrementa ttl e spedisce messaggio
ICMP “time exceeded”
Š datagramma con ttl=2
„
secondo router attraversato spedisce messaggio ICMP
“time exceeded”
Š ……………come si riconosce il destinatario?
„
poichè non scarta il datagram con ttl=1
Š L’host destinatario risponde con ICMP “port
unreachable”
31
32
„
„
poco probabile un'app. con porta > 30.000
ICMP contiene indirizzo IP della destinazione
Output di Traceroute
Esempio traceroute su LAN
Š Intestazione
„
„
„
traceroute to intrepido.diaedu.unisa.it
(193.205.162.3) hops max 30, 40 byte packets
1 nis1sa.dia.unisa.it (192.41.218.254) 0 ms 0
ms 0 ms
2 intrepido.diaedu.unisa.it (193.205.162.3) 0 ms
0 ms 0 ms
Nome e indirizzo IP della destinazione
Max num hops (TTL)
Dimensione pacchetti
Š Una riga per ogni hop
„
„
„
„
TTL del pacchetto spedito
Nome e indirizzo IP che ha spedito il messaggio
ICMP
Round Trip Time (3 volte)
Se RTT > 5 s viene stampato *
33
34
Analisi Traceroute con
Tcpdump
Esempio traceroute su WAN
35
traceroute to ftp.unina.it (192.132.34.17), 30
hops max, 40 byte packets
1 nis1sa.dia.unisa.it (192.41.218.254) 0 ms 0 ms 0 ms
2 bar-gw.unisa.it (193.205.160.126) 1 ms 1 ms 1 ms
3 unisa-gw-ser1.unisa.it (193.205.190.38) 40 ms 31 ms
42 ms
4 193.205.190.249 (193.205.190.249) 38 ms 40 ms 54 ms
5 unisa-gw.unisa.it (193.205.190.42) 49 ms 55 ms 57 ms
6 rc-unisa.na.garr.net (193.206.130.129) 65 ms 49 ms
62 ms
7 unina-rc.na.garr.net (193.206.130.6) 154 ms 153 ms
148 ms
8 garr-gw-na1.unina.it (192.133.28.254) 147 ms 145 ms
149 ms
9 ftp.unina.it (192.132.34.17) 161 ms 152 ms 159 ms
tcpdump: listening on eth0
10:30:48.278125 ustica.dia.unisa.it >
spargi.dia.unisa.it: icmp: echo request
10:30:48.278711 spargi.dia.unisa.it >
ustica.dia.unisa.it: icmp: echo reply
10:30:49.290019 ustica.dia.unisa.it >
spargi.dia.unisa.it: icmp: echo request
10:30:49.290581 spargi.dia.unisa.it >
ustica.dia.unisa.it: icmp: echo reply
36
Analisi Traceroute con
Tcpdump
Analisi traceroute con tcpdump
(continua)
12:13:42.164377 arp who-has dino.dia.unisa.it tell
ustica.dia.unisa.it
12:13:42.164498 ustica.dia.unisa.it.33844 >
bartali.security.unisa.it.33440: udp 12 [ttl 1]
12:13:42.168726 arp who-has ustica.dia.unisa.it
tell dino.dia.unisa.it
12:13:42.168777 arp reply ustica.dia.unisa.it isat 0:80:c8:fc:3d:33
12:13:42.168847 dino.dia.unisa.it >
ustica.dia.unisa.it: icmp: time exceeded intransit [tos 0xc0]
37
38
Commenti su Traceroute
Š Due datagrammi UDP successivi potrebbero
seguire strade diverse
Š Il messaggio ICMP di errore potrebbe seguire
un percorso diverso dal datagramma UDP
„
RTT non significativo
Š Il datagramma IP che contiene il messaggio
ICMP ha come indirizzo sorgente
dell’interfaccia in ingresso del router
39
„
Diverso da Record Route Option
quello
12:13:42.173482 ustica.dia.unisa.it.33844 >
bartali.security.unisa.it.33441: udp 12
12:13:42.174418 ustica.dia.unisa.it.33844 >
bartali.security.unisa.it.33441: udp 12
12:13:42.175376 bartali.security.unisa.it >
ustica.dia.unisa.it: icmp: bartali.security.unisa.it
udp port 33441 unreachable
12:13:42.177565 ustica.dia.unisa.it.33844 >
bartali.security.unisa.it.33442: udp 12
12:13:42.178317 bartali.security.unisa.it >
ustica.dia.unisa.it: icmp: bartali.security.unisa.it
udp port 33442 unreachable
12:13:42.179630 ustica.dia.unisa.it.33844 >
bartali.security.unisa.it.33443: udp 12
12:13:42.180363 bartali.security.unisa.it >
ustica.dia.unisa.it: icmp: bartali.security.unisa.it
udp port 33443 unreachable
Fly UP