Programmazione su Reti
IP e ICMP
Giuseppe Persiano
Dipartimento di Informatica ed Applicazioni
Università degli Studi di Salerno
http://www.dia.unisa.it/~giuper
Protocollo IP

IP è il cavallo di fatica di TCP/IP
» tutti i dati TCP, UDP, ICMP sono trasferiti come
datagrammi IP

Servizio inaffidabile:
» nessuna garanzia di consegna dei dati

Servizio senza connessione
» ogni datagramma è inviato indipendentemente
» datagrammi possono arrivare in ordine differente
dall’oridne di invio
Struttura header IP
4-bit
version
header
length
total length in byte
type of service
identification
20
byte
TTL
flag
protocol
fragment offset
header checksum
source IP address
destination IP address
options
Data
Campi dell’header IP

Byte ordinati in big endian (least significant first).

Versione più diffusa 4 (IPv6 già rilasciato).

Header length: numero di parole a 32 bit di cui è
composto l’header.

TOS: tipo di servizio




Minimize delay: applicazioni interattive (telnet)
Maximize throughput: grosse moli di dati(FTP)
Maximize reliability: applicazioni di controllo (SNMP)
Minimize monetary cost: grossi dati ma pochi importanti
(NNTP)
Campi dell’header IP

Lunghezza totale: 65536 lunghezza massima.





Host non tenuto ad accettare dgram di più di 576 byte
Identificativo: ogni dgram in partenza da un
host ha un id unico.
TTL: inizialmente posto a 32 o 64. Ad ogni
router attraversato decrementato di 1. Dgram
con TTL=0 sono scartati e messaggio ICMP
inviato al mittente.
Protocol: demultiplexing per il trasporto
Header checksum: solo header non dati
Internet Control Message Protocol

Protocollo per comunicare errori o situazioni
che richiedono attenzione

Tipicamente gestiti da IP o dal trasporto ma
alcuni messaggi causano errori all’applicazione.

Messagi sono incapsulati all’interno di
datagrammi IP.
Messaggi di errore

Destination unreachable



Time exceeded in routing


Host-Network unreachable: un router non riesce a
raggiungere la rete su cui inoltrare il dgram
Port unreachable: nessuno processo in ascolto sulla
porta (utilizzato con UDP)
Dgram con TTL=0 ricevuto
Parameter problem

Header IP con errori
PING

Applicazione per verificare raggiungibilità di un
host


Client program invia un messaggio ICMP echo
request al server.


ping <nomehost>
Messaggio contiene un identificatore ed un numero
seriale
Server invia un messaggio

Identificatore e numero seriale duplicati
PING con Record Route


PING con flag –R registra l’indirizzo di ciascun router
attraversato (indirizzo interfaccia di uscita).
Opzione Record Route di IP
code len ptr



IP addr #1
IP addr #2
……………………
IP addr #9
Codice dell’opzione: RR ha codice 7
Len: numero di byte a disposizione (39 in questo caso).
Ptr: puntatore al prossimo spazio libero (inizialmente 4)
Applicazione Traceroute


Utile per scoprire una rotta verso un host
destinazione.
Utilizza
il campo TTL dell’header IP
il messaggio ICMP time exceeded
il messaggio ICMP port unreachable
Applicazione Traceroute






Traceroute invia un datagramma IP contente un
datagramma UDP per una porta >30000 all’host
destinazione con TTL=0.
Il datagramma è ricevuto dal primo router.
Il campo TTL è 0 e quindi viene inviato un messaggio
ICMP time exceeded.
Il datagramma è inviato di nuovo con TTL=1.
Il secondo router sulla rotta in via il messaggio ICMP
time exceeded.
Il datagramma è inviato con valori crescenti di TTL fin
quando non arriva a destinazione nel qual caso l’host
destinazione invia un messaggio ICMP host
unreachable.
Scarica

IP -- Ping e Traceroute