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.