L'ICMP consente, quindi, una comunicazione straordinaria tra router ed host rendendo possibile lo scambio di segnali di errore (o di controllo) attraverso le interfacce software dell'internet, senza però arrivare su fino al livello degli applicativi. L'ICMP è una parte necessaria ed integrante dell'IP ed è contenuto nell'area dati di un datagramma IP.L'ICMP include:
- messaggi di source quench, che ritardano il rate di trasmissione
- messaggi di redirect, che richiedono ad un host di cambiare la propria tabella di routing
- messaggi di echo request/reply, che l'host può usare per determinare se la destinazione può essere raggiunta (ping).
Un ICMP possiede 3 campi di lunghezza fissa nella testa del messaggio:
- il type field (8 bits), che identifica il messaggio
- il code field (8 bits), che contiene informazioni circa il tipo del messaggio
- il checksum field (16 bits). I restanti campi del formato ICMP variano in base al tipo di messaggio.
UDP - User Datagram ProtocolE' un protocollo di trasporto che si colloca sopra l'Internet Protocol Layer (IP):
- il numero di porta di destinazione
- il numero della porta di origine
Ciò permette al software UDP di destinazione di recapitare il messaggio al corretto ricevente (programma o utenza) e a quest'ultimo di inviare una replica.Il grado di inaffidabilità è quello propria dell'IP, nel senso che l'UDP non prevede nessun protocollo per il controllo dell'errore e, a differenza del TCP:
- non usa acknowledgement per assicurare al mittente che i messaggi siano effettivamente arrivati
- non dispone le sequenze di datagrammi in ordine
- non fornisce una retroazione per il controllo del rate del flusso di informazioni tra macchine.
Quindi i messaggi UDP possono essere persi, duplicati o arrivare fuori ordine.I datagrammi, inoltre, possono arrivare più velocemente di quanto il ricevente sia in grado di processarli.Il protocollo UDP lavora bene in una rete locale, ma potrebbe fallire se usato in una rete di dimensioni maggiori. Esso fornisce un datagramma più utile di quello IP per i collegamenti fra utenze. Su tale base, infatti, è stato costruito l'applicativo Network File System (NFS) molto diffuso nelle reti locali. Ciascun messaggio UDP è definito come user datagram ed è costituito di due parti:
- UDP header
- UDP data area
che vengono incapsulate nell'IP datagram.Come mostrato nella prossima figura, l'header del'UDP è simile a quello del TCP, ma:
- risulta essere più corto non avendo nessun numero di sequenza;
- è diviso in quattro campi di 16 bits, che specificano il numero di porta da cui il messaggio è stato spedito (opzionale), quello della porta di destinazione (usata per demultiplexare i datagrammi tra i processi che aspettano di riceverli), la lunghezza del messaggio ed il checksum.
- il numero della Destination Port della macchina da cui il messaggio è spedito;
- il numero della Source Port della macchina mittente, a cui la replica dovrà essere indirizzata.
Ciò rende possibile, per ogni processo, il colloquio tra mittente e destinatario.Ci sono due approcci per l'assegnazione delle porte:
- Il Central Authority in cui due macchine che devono interoperare tra di loro, si accordano per permettere a un'autorità centrale di assegnare i numeri di porta (Well-known ports) che sono necessari e di pubblicare la lista di tutte le assegnazioni (Universal assignment). Il software che gestisce le porte sarà realizzato in base a tale lista.
- Il Dynamic Binding - in questa modalità le porte non sono universalmente conosciute, nel caso che un programma necessiti di una porta, è il software di rete ad assegnarla. Per sapere la porta corrente assegnata su un altro macchina è necessario inviargli una richiesta del numero di porta assegnata al servizio di interesse.
I progettisti del TCP/IP usano un approccio ibrido che assegna alcuni numeri di porta a priori (Low values) e lascia altri disponibili per siti locali o programmi applicativi (High values).La tabella seguente contiene alcune tra le più significative UDP well-known ports: