Protocollo ICMP e suo utilizzo: Programmi Ping e Traceroute Stack ...
Protocollo ICMP e suo utilizzo: Programmi Ping e Traceroute Stack ...
Protocollo ICMP e suo utilizzo: Programmi Ping e Traceroute Stack ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Protocollo</strong> <strong>ICMP</strong> e <strong>suo</strong> <strong>utilizzo</strong>:<br />
<strong>Programmi</strong> <strong>Ping</strong> e <strong>Traceroute</strong><br />
Ing. R.G. Garroppo<br />
<strong>Stack</strong> protocollare TCP/IP<br />
<strong>Ping</strong> Telnet FTP SMTP HTTP DNS SNMP NFS<br />
Applicazione<br />
RTP<br />
Numero di Porta<br />
TCP<br />
UDP<br />
Segmenti<br />
Trasporto<br />
<strong>ICMP</strong><br />
Rete<br />
RARP<br />
IP<br />
ARP<br />
Pacchetti<br />
Indirizzo IP<br />
Data Link<br />
Fisico<br />
Livello Data Link<br />
Livello Fisico<br />
Trame<br />
Tipo di Trame<br />
e Indirizzo DL
Entità, SAP, PDU<br />
N-1 SAP<br />
Entità di<br />
livello N<br />
N-1 SAP<br />
Livello N<br />
Interfaccia<br />
Livello N-1<br />
(N-1)-PCI<br />
N-PDU<br />
SAP<br />
(N-1)-SDU<br />
PDU: Protocol Data Unit<br />
SDU: Service Data Unit<br />
PCI: Protocol Control Inf.<br />
SAP: Service Access Point<br />
Entità di<br />
livello N-1<br />
Entità di<br />
livello N-1<br />
(N-1)-PDU<br />
Header<br />
Area dati TCP<br />
Segmenti<br />
Header<br />
Area dati IP<br />
Pacchetti<br />
Header<br />
Area dati Frame<br />
Trame<br />
Intestazione Pacchetto IP<br />
0<br />
8 16 24 32<br />
Vers HLenght ToS Total Lenght<br />
Identification Flag Offset<br />
TTL Protocol Header Checksum<br />
Source IP Address<br />
Destination IP Address<br />
Options<br />
DATA (payload)
Internet Control Message Protocol<br />
Specificato nella RFC 792<br />
Utilizzato per comunicare errori o situazioni della rete che<br />
richiedono attenzione<br />
Il messaggio <strong>ICMP</strong> è incapsulato direttamente nel pacchetto<br />
IP<br />
Il messaggio <strong>ICMP</strong>, se trasmesso in seguito ad un errore,<br />
trasporta l’intestazione IP e almeno i primi 8 byte del<br />
pacchetto IP che ha generato l’errore<br />
Questo permette di capire se l’errore è stato causato da UDP<br />
o TCP e da quale processo (mediante numero di porta)<br />
I messaggi sono scambiati fra host, senza l’uso di una<br />
particolare porta UDP o TCP<br />
Messaggio <strong>ICMP</strong><br />
20 Bytes<br />
IP Header<br />
Messaggio <strong>ICMP</strong><br />
8 16<br />
0 31<br />
Tipo<br />
Codice<br />
Checksum<br />
Contenuto<br />
Tipo: abbiamo 15 tipi diversi di messaggi <strong>ICMP</strong><br />
Codice: specifica meglio il tipo<br />
Checksum: protegge il messaggio <strong>ICMP</strong><br />
Classificazione dei messaggi <strong>ICMP</strong><br />
•Richiesta<br />
•Errore<br />
...
Tipologie di messaggi <strong>ICMP</strong> - 1<br />
Tipologie di messaggi <strong>ICMP</strong> - 2
Messaggi di errore <strong>ICMP</strong><br />
Per non causare un aumento eccessivo di messaggi di<br />
errore <strong>ICMP</strong> trasmessi in broadcast, questi non vengono<br />
generati in risposta a<br />
Un messaggio di errore <strong>ICMP</strong><br />
Un pacchetto IP multicast o broadcast<br />
Un pacchetto trasmesso in broadcast a livello 2<br />
Un frammento di un pacchetto diverso dal primo<br />
Un pacchetto IP avente come indirizzo sorgente un<br />
indirizzo multicast o broadcast<br />
<strong>ICMP</strong> Port Unreachable Error<br />
Se il protocollo UDP riceve un segmento verso una porta sulla quale nessun<br />
processo è in ascolto, genera questo errore<br />
Per generarlo si può usare un’applicazione TFTP (69)
Programma <strong>Ping</strong><br />
Strumento per verificare la raggiungibilità di un terminale<br />
Si base sullo scambio di messaggi <strong>ICMP</strong> echo request<br />
(trasmesso dal client) e <strong>ICMP</strong> echo reply (trasmesso dal<br />
server)<br />
Permette di avere una stima approssimativa del Round Trip<br />
Delay (RTT)<br />
Attacchi Denial of Service ha condotto gli amministratori di<br />
rete a filtrare tali messaggi<br />
Per distinguere i diversi processi di ping su un terminale, si<br />
usa campo identifier<br />
Il campo sequence number permette di associare le risposte<br />
alle diverse richieste<br />
Programma <strong>Ping</strong> nel S.O. Window
Funzionamento <strong>Ping</strong><br />
Opzione Record Route del <strong>Ping</strong><br />
Attivando questa opzione (–r in Windows) ogni nodo<br />
inserisce il proprio indirizzo nel campo IP RR option del<br />
pacchetto IP che trasporta il messaggio <strong>ICMP</strong> Echo<br />
request<br />
Il ricevitore copia gli indirizzi nel pacchetto IP che<br />
trasporta il messaggio <strong>ICMP</strong> echo reply<br />
I nodi sul percorso di ritorno inseriscono il proprio<br />
indirizzo IP nel pacchetto IP che trasporta il messaggio<br />
<strong>ICMP</strong> echo reply<br />
Gli indirizzi inseriti sono quelli delle interfacce di uscita
Opzione Record Route del <strong>Ping</strong> - 2<br />
39 bytes<br />
Code<br />
Len<br />
Ptr<br />
Ptr=4<br />
IP addr #1 IP addr #2<br />
IP addr #9<br />
1 1 1 4 bytes 4 bytes 4 bytes<br />
Ptr=8<br />
Ptr=36<br />
Ptr=40<br />
Problemi<br />
L’opzione Record Route è opzionale e nodi o terminali<br />
possono non supportarla<br />
Il campo Header Length del pacchetto IP è di 4 bit, per cui la<br />
dimensione massima dell’intestazione IP è di 15 word (blocco<br />
di 32 bit). Posso registrare solo 9 indirizzi<br />
Opzione Record Route del <strong>Ping</strong> - Esempio
Programma <strong>Traceroute</strong><br />
Permette di individuare il percorso dei pacchetti IP da<br />
sorgente a destinazione<br />
Perché usare <strong>Traceroute</strong> invece che <strong>Ping</strong> –r<br />
Non tutti i router supportano l’opzione Record Route<br />
Con <strong>Ping</strong> registro sia andata che ritorno, per cui raddoppio<br />
numero di indirizzi IP registrati<br />
Al più possono essere registrati nel campo Record Route<br />
opzionale solo 9 indirizzi IP<br />
Principio di Funzionamento di <strong>Traceroute</strong><br />
Il funzionamento si basa sul campo TTL e protocollo <strong>ICMP</strong><br />
Per conoscere indirizzo primo router basta trasmettere<br />
pacchetto con TTL=1, per secondo router TTL=2, …<br />
Il campo TTL viene decrementato di uno da ogni router della<br />
rete<br />
Se TTL=0 allora il router trasmette messaggio <strong>ICMP</strong> Time<br />
exceeded e scarta il pacchetto<br />
Per scoprire che siamo arrivati a destinazione utilizziamo delle<br />
porte UDP molto alte in modo tale che sia poco probabile che<br />
a destinazione ci sia un’applicazione in ascolto su tale porta<br />
Se arriva un pacchetto su una porta inutilizzata, viene trasmesso<br />
un messaggio <strong>ICMP</strong> port unreachable
Interfaccie riportate da <strong>Traceroute</strong><br />
L’indirizzo trasportato dai messaggi di errore <strong>ICMP</strong> sono delle<br />
porte di ingresso dei nodi<br />
LAN 1<br />
*.52.1<br />
Router 1 Router 2<br />
*.9.29<br />
*.186.10<br />
*.186.12<br />
LAN 2<br />
Tracert www.ucla.edu<br />
<strong>Traceroute</strong> – Esempio 1
<strong>Traceroute</strong> – Dettaglio scambio messaggi<br />
<strong>Traceroute</strong> – Dettaglio messaggi