[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Viaggio di un pacchetto UDP o TCP: «n» è la porta di origine; «m» è la porta di destinazione:
|
Andata e ritorno per le connessioni che prevedono l'uso delle porte: «n» è la porta usata nel nodo «A»; «m» è la porta usata nel nodo «B»:
|
Esempio di ciò che accade quando dal nodo «A» un processo instaura una connessione HTTP con il nodo «B»; in particolare, in questo caso il processo in questione utilizza localmente la porta 1 083:
|
L'instaurarsi di una connessione TCP avviene attraverso fasi differenti, in cui vengono usati degli indicatori all'interno dei pacchetti per attribuire loro un significato speciale. In particolare, quando un pacchetto contiene il bit SYN attivo, si tratta di un tentativo di iniziare una nuova connessione:
|
I pacchetti generati a livello di trasporto (TCP, UDP e ICMP) possono essere frammentati dal protocollo IP, in base alle necessità. In tal caso, i frammenti successivi al primo hanno meno informazioni a disposizione; per la precisione perdono le indicazioni salienti che permettono di identificare le loro caratteristiche in base ai protocolli del livello di trasporto.
Informazioni essenziali nei pacchetti e livello in cui vengono inserite:
|
Nei pacchetti frammentati è garantita soltanto la presenza dell'indicazione degli indirizzi IP del mittente e del destinatario, assieme alle informazioni necessarie a ricomporre i pacchetti. In questo modo, le informazioni relative alle porte TCP o UDP si trovano normalmente nel primo di tali frammenti, mentre gli altri ne sono sprovvisti.
Il protocollo TCP è in grado di frammentare e ricomporre i pacchetti provenienti dal livello superiore, ma questo non esclude la possibilità che debba intervenire anche una frammentazione ulteriore, a livello IP, a causa delle limitazioni della rete, di cui il protocollo TCP non può essere consapevole. |
I messaggi ICMP qualificano i pacchetti del protocollo ICMP, che al contrario di TCP e di UDP non hanno le porte. Il messaggio ICMP è composto da un numero, che ne definisce il tipo, con l'aggiunta eventuale di un altro numero che indica il codice, da intendere in pratica come un sottotipo.
|
Il Ping funziona attraverso l'invio di un pacchetto ICMP di tipo 8, che rappresenta una richiesta di eco, con la quale si ottiene normalmente una risposta consistente in un pacchetto ICMP di tipo 0.
|
$
ping -c 3 dinkel.brot.dg
[Invio]
PING dinkel.brot.dg (192.168.1.1): 56 data bytes 64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.4 ms 64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.5 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.7 ms --- dinkel.brot.dg ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.7 ms |
I pacchetti Ping, sia di richiesta di eco, sia di risposta, possiedono un numero di ordine, icmp_seq, che consente di verificare con quale sequenza vengono restituiti i pacchetti di risposta dalla rete.
I pacchetti IP possiedono un'informazione denominata TTL, ovvero Time to live. Il valore di questo campo va da 0 a 255 e viene deciso da chi genera il pacchetto. Ogni volta che un pacchetto attraversa un nodo (un router o qualcosa che svolge un compito simile), questo nodo deve provvedere a ridurre di un'unità questo valore. Quando un nodo riceve un pacchetto con un valore TTL pari a zero, lo elimina, mandando al mittente un pacchetto ICMP di tipo 11, «tempo scaduto», che indica l'impossibilità di raggiungere la destinazione con quel valore TTL di partenza.
|
I messaggi ICMP di tipo 3 sono essenziali per garantire il funzionamento della rete. |
Traceroute sfrutta i messaggi ICMP di tipo 11 e di tipo 3 per disegnare la mappa dei pacchetti inviati a un certa destinazione. Invia una serie di pacchetti, UDP o ICMP, partendo da un valore TTL iniziale pari a zero, incrementando successivamente, fino a raggiungere la destinazione richiesta.
|
$
/usr/sbin/traceroute www.swlibero.org
[Invio]
traceroute to master.swlibero.org (62.152.34.17), \ |
Traceroute chiama il valore TTL come hop, salto. Nell'esempio viene usato un valore massimo di 30 (che comunque risulta più che sufficiente).
Traceroute utilizza generalmente un pacchetto UDP destinato alla porta 33 434+n, dove n rappresenta il valore TTL iniziale. Supponendo che non ci sia nulla in ascolto in quella porta nel nodo di destinazione, l'ultimo nodo restituisce un pacchetto ICMP di tipo 3, codice 3: «porta irraggiungibile».
Quando un pacchetto di un protocollo TCP o UDP raggiunge un router che non è in grado di instradarlo, perché consapevole di non poter raggiungere la destinazione richiesta, il pacchetto viene bloccato, restituendo al mittente un pacchetto ICMP di tipo 3: «destinazione irraggiungibile».
|
I messaggi ICMP sono importanti per garantire il funzionamento della rete; in particolare, i messaggi di tipo 3 sono fondamentali per garantire il funzionamento dei router dinamici che modificano l'instradamento al mutare delle condizioni della rete.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome protocolli.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]