Il ruolo del protocollo IP
Il protocollo IP fa parte del livello internet della serie di protocolli TCP/IP. E' 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 protocollo IP determina il destinatario del messaggio grazie a 3 campi :
- Il campo indirizzo IP: indirizzo del terminale
- Il campo maschera di sub-rete: una maschera di sub-rete permette al protocollo IP di determinare la parte dell'indirizzo IP che riguarda la rete
- Il gateway di default: 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 a cosa assomiglia un datagramma :
Versione (4 bits) |
Lunghezza dell'intestazione (4 bits) |
Tipo di servizio (8 bits) |
Lunghezza totale (16 bits) |
Identificazione (16 bits) |
Flag (3 bits) |
Spostamento sezione (13 bits) |
Durata di vita (8 bits) |
Protocollo (8 bits) |
Somma di controllo intestazione (16 bits) |
| Indirizzo IP sorgente (32 bits) |
| Indirizzo IP destinazione (32 bits) |
| Dati |
Ecco il significato dei differenti campi :
- Versione (4 bits): 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 bits.
- Lunghezza dell'intestazione, o IHL per Internet Header Length (4 bits): si tratta del numero di parole di 32 bits costituenti l'intestazione (nota: il valore minimo è 5). Questo campo è codificato a 4 bits.
- Tipo di servizio (8 bits): indica il modo in cui il datagramma deve essere trattato.
- Lunghezza totale (16 bits): indica la dimensione totale del datagramma in bytes. Essendo la dimensione di questo campo di due bytes, la dimensione totale del datagramma non può eccedere i 65536 bytes. 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 (8bits): 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 bits): 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 bits) : questo campo contiene un valore codificat a 16 bits 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 bits 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 bits posizionati a 1
- Indirizzo IP sorgente (32 bits): Questo campo rappresenta l'indirizzo IP del terminale emettitore, e permette al destinatario di rispondere
- Indirizzo IP destinazione (32 bits): indirizzo IP del destinatario del messaggio
La frammentazione dei datagrammi IP
Come abbiamo visto precedentemente, la dimensione di un datagramma è massimo di 65536 bytes. 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 una trama è detta 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 bytes) |
| 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 bytes.
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 rassemblamento :
- campo spostamento di frammenti (13 bits): campo che permette di conoscere la posizione iniziale del frammento nel datagramma inziale. L'unità di misura di questo campo è di 8 bytes (con il primo frammento di valore 0).
- campo di identificazione (16 bits): numero attribuito ad ogni frammento per permettere il riassemblaggio.
- campo lunghezza totale (16 bits): è ricalcolato per ogni frammento.
- campo flags (3 bits): è composto da tre bits :
- Il primo non è utilizzato.
- Il secondo (detto DF : 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 : 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 la cosa migliore è fare riferimento alla RFC 791 che spiega in dettaglio il protocollo IP :
Ultime modificazione ilvenerdì 6 febbraio 2009 alle 16:51:56.