Il protocollo IP

Il protocollo IP fa parte del livello internet della serie di protocolli TCP/IP. È uno dei protocolli più importanti di internet dato che permette l'elaborazione e il trasporto dei datagrammi IP (i pacchetti di dati), senza tuttavia assicurarne la «consegna». In realtà, il protocollo IP tratta i datagrammi IP indipendentemente gli uni dagli altri definendo la loro rappresentazione, il loro routing e la loro spedizione.

Il ruolo del protocollo IP

Il protocollo IP determina il destinatario del messaggio grazie a 3 campi: il campo indirizzo IP, ovvero l'indirizzo del terminale; il campo subnet mask, cioè una maschera di sub-rete permette al protocollo IP di determinare la parte dell'indirizzo IP che riguarda la rete; il gateway di default, che permette al protocollo internet di sapere a quale terminale rimettere il datagramma nel caso in cui il terminale di destinazione non sia sulla rete locale.

I datagrammi

I dati circolano su internet sotto forma di datagrammi (si parla anche di pacchetti). I datagrammi sono dei dati incapsulati, cioè dei dati ai quali sono state aggiunge delle intestazioni corrispondente a informazioni sul loro trasporto (come l'indirizzo IP di destinazione). I dati contenuti nei datagrammi sono analizzati (e eventualmente modificati) dai router che permettono il loro transito. Ecco come può essere descritto un datagramma:

32 bits
Versione
(4 bit)
Lunghezza dell'intestazione
(4 bit)
Tipo di servizio
(8 bit)
Lunghezza totale
(16 bit)
Identificazione
(16 bit)
Flag
(3 bit)
Spostamento sezione
(13 bit)
Durata di vita
(8 bit)
Protocollo
(8 bit)
Somma di controllo intestazione
(16 bit)
Indirizzo IP sorgente (32 bit)
Indirizzo IP destinazione (32 bit)
Dati

Ecco il significato dei differenti campi:

Versione (4 bit), si tratta della versione del protocollo IP che si utilizza (attualmente la versione 4 IPv4) per verificare la validità del datagramma. E' codificata a 4 bit;Lunghezza dell'intestazione, o IHL per Internet Header Length (4 bit), si tratta del numero di parole di 32 bit costituenti l'intestazione (nota: il valore minimo è 5). Questo campo è codificato a 4 bit; Tipo di servizio (8 bit), indica il modo in cui il datagramma deve essere trattato;

Lunghezza totale (16 bit), indica la dimensione totale del datagramma in byte. Essendo la dimensione di questo campo di due byte, la dimensione totale del datagramma non può eccedere i 65536 byte. Utilizzato congiuntamente con la dimensione dell'intestazione, questo campo permette di determinare dove si trovano i dati; Identificazione, flags e spostamento di frammento sono dei campi che permettono la frammentazione dei datagrammi, verranno spiegati in seguito;

Durata di vita, detta anche TTL per Time To Live (8bit), questo campo indica il numero massimo di router attraverso i quali il datagramma può passare. Questo campo è diminuito ad ogni passaggio in un router, e quando raggiunge il livello critico 0, il router distrugge il datagramma. Questo evita la saturazione della rete con datagrammi persi;Protocollo (8 bit), questo campo, in notazione decimale, permette di sapere da quale protocollo deriva il datagramma:

ICMP: 1

IGMP: 2

TCP: 6

UDP: 17

Somma di controllo dell'intestazione o in inglese header checksum (16 bit), questo campo contiene un valore codificato a 16 bit che permette di controllare l'integrità dell'intestazione per determinare che questa non sia stata alterata durante la trasmissione. La somma di controllo è il completamento di ciascuna delle parole di 16 bit dell'intestazione (campo somma di controllo escluso). Esso rappresenta quello che, al momento della somma dei campi dell'intestazione (somma di controllo inclusa), si ottiene attraverso un numero con tutti i bit posizionati a 1; Indirizzo IP sorgente (32 bit), questo campo rappresenta l'indirizzo IP del terminale emettitore, e permette al destinatario di rispondere; Indirizzo IP destinazione (32 bit), indirizzo IP del destinatario del messaggio.

La frammentazione dei datagrammi IP

Come abbiamo visto precedentemente, la dimensione di un datagramma è massimo di 65536 byte. Tuttavia questo valore non è mai raggiunto dato che le reti non hanno una capacità sufficiente per inviare dei pacchetti così grossi. Inoltre, le reti su internet usano diverse tecnologie, anche se la dimensione massima di un datagramma varia a seconda del tipo di rete. La dimensione massima di un frame è detto MTU (Maximum Transfer Unit), provocherà la frammentazione del datagramma se questo ha una dimensione più grande che l'MTU di rete:

Tipo di rete MTU (in byte)
Arpanet 1000
Ethernet 1500
FDDI 4470

La frammentazione di un datagramma avviene a livello dei router, cioè alla transizione da una rete con un MTU importante ad un'altra con un MTU più debole. Se il datagramma è troppo grande per passare sulla rete, il router lo divide, cioè lo scompone in frammenti di dimensione minore rispetto all'MTU di rete e in modo tale che la dimensione del frammento si un multiplo di 8 byte:

In seguito il router invia questi frammenti in modo indipendente e di re incapsula (aggiungere un'intestazione ad ogni frammento) considerando la nuova dimensione. Inoltre, il router aggiunge delle informazioni affinché il terminale di destinazione possa riassemblare i frammenti nell'ordine giusto. Non vi è però nessuna garanzia che i frammenti arrivino nell'ordine corretto, dato che sono inviati in maniera individuale e indipendente. Per considerare la frammentazione, ogni datagramma ha più campi che permettono il riassemblamento:

campo spostamento di frammenti (13 bit), campo che permette di conoscere la posizione iniziale del frammento nel datagramma iniziale. L'unità di misura di questo campo è di 8 byte (con il primo frammento di valore 0);

campo di identificazione (16 bit), numero attribuito ad ogni frammento per permettere il riassemblaggio; campo lunghezza totale (16 bit), è ricalcolato per ogni frammento;

campo flags (3 bit), è composto da tre bit: il primo non è utilizzato; il secondo (detto DF, ovvero Don't Fragment ) indica se il datagramma può essere frammentato o meno. Se un datagramma ha questo bit posizionato a 1 e il router non può inviarlo senza frammentarlo, allora il datagramma sarà rigettato con un messaggio di errore;

L'ultimo (detto MF, cioè More Fragments, in italiano Frammenti a seguire) indica se il datagramma è un frammento di dato (1). Se l'indicatore è a zero, allora il frammento è l'ultimo (quindi il router dovrebbe avere tutti i frammenti precedenti) oppure il datagramma non è soggetto ad una frammentazione.

Il routing IP

Il routing IP è parte integrante del livello IP della serie TCP/IP. Il routing consiste nell'assicurare l'invio di un datagramma IP attraverso una rete prendendo il percorso più breve. Questo ruolo è assicurato da dei terminali detti router, cioè dei terminali collegati (e colleganti) almeno due reti.

Ulteriori informazioni

Per ulteriori informazioni fare riferimento alla RFC 791 che spiega in dettaglio il protocollo IP: RFC 791 originale.

Foto: © Pixabay.

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Il documento intitolato « Il protocollo IP » dal sito CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.