[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 735.   Protocolli

735.1   TCP, UDP e porte

Viaggio di un pacchetto UDP o TCP: «n» è la porta di origine; «m» è la porta di destinazione:

pacchetto UDP o TCP da un nodo all'altro

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»:

pacchetti di andata e di ritorno

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:

pacchetti di andata e di ritorno

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:

pacchetto SYN

735.2   Frammentazione IP

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:

TCP/IP

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.

735.3   Messaggi ICMP: tipo e codice

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.

Tipo Codice Nome Chi lo utilizza
0 echo-reply risposta a un ping (pong)
1
2
3 destination-unreachable traffico TCP e UDP
3 0   network-unreachable
3 1   host-unreachable
3 2   protocol-unreachable
3 3   port-unreachable
3 4   fragmentation-needed
3 5   source-route-failed
3 6   network-unknown
3 7   host-unknown
3 8   
3 9   network-prohibited
3 10   host-prohibited
3 11   TOS-network-unreachable
3 12   TOS-host-unreachable
3 13   communication-prohibited
3 14   host-precedence-violation
3 15   precedence-cutoff
4 source-quench
5 redirect instradamento dei pacchetti
5 0   network-redirect
5 1   host-redirect
5 2   TOS-network-redirect
5 3   TOS-host-redirect
6
7
8 echo-request ping
9 router-advertisement
10 router-solicitation
11 time-exceeded (ttl-exceeded) traceroute
11 0   ttl-zero-during-transit
11 1   ttl-zero-during-reassembly
12 parameter-problem
12 0   ip-header-bad
12 1   required-option-missing
13 timestamp-request
14 timestamp-reply
15 information-request
16 information-reply
17 address-mask-request
18 address-mask-reply

735.4   Messaggi ICMP: Ping

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 pong

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.

735.5   Messaggi ICMP: TTL

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.

ICMP 11

I messaggi ICMP di tipo 3 sono essenziali per garantire il funzionamento della rete.

735.6   Messaggi ICMP: Traceroute

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.

traceroute

/usr/sbin/traceroute www.swlibero.org[Invio]

traceroute to master.swlibero.org (62.152.34.17), \
  \30 hops max, 38 byte packets 1 151.5.184.148 (151.5.184.148) 107.225 ms 267.458 ms 109.690 ms 2 151.5.184.65 (151.5.184.65) 109.705 ms 115.023 ms 109.710 ms 3 151.5.206.137 (151.5.206.137) 119.754 ms 117.595 ms 132.192 ms 4 192.106.1.162 (192.106.1.162) 147.402 ms 127.113 ms 139.737 ms 5 151.17.202.42 (151.17.202.42) 139.740 ms 145.503 ms 151.768 ms 6 master.swlibero.org (62.152.34.17) 127.771 ms 147.494 ms 129.758 ms

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».

735.7   Messaggi ICMP: destinazione 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».

destinazine 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]

Valid ISO-HTML!

CSS validator!