27.11.2014 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!