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.