Comments
Description
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