Consulenze presso Eunet srl, via dell'Artigianato 15, 09122 Cagliari 070 753609 Lun - Ven 08:30-13:00 / 14.30-17.00

Il protocollo IP

Il protocollo IP (Internet Protocol) è il principale protocollo del livello 3 (Network) dell'architettura TCP/IP. Si occupa di instradare i messaggi sulla rete fornendo un indirizzamento logico agli host della rete stessa: ciascun host ha in dotazione un indirizzo IP univoco per la rete sulla quale lavora.

Si tratta di un protocollo non connesso (connectionless o CLNS): questo significa che quando due host comunicano al livello 3 tramite IP, non è previsto che stabiliscano prima una sessione. E’ inoltre un protocollo non garantito (unreliable), poiché non garantisce la consegna, l’integrità, la non duplicazione, e l’ordine di consegna dei pacchetti; tali controlli sono a carico dei protocolli di livello superiore. L’Internet Protocol si occupa di instradare i messaggi sulla rete, ma ha anche funzioni di frammentazione e riassemblaggio dei messaggi e di rilevazione (ma non correzione) degli errori. Ogni pacchetto in arrivo dal livello superiore di trasporto viene frammentato e dotato di un header IP (intestazione), per poi essere trasmesso sotto forma di trame da protocolli di livello inferiore. L’IP sposta i pacchetti attraverso la rete percorrendo un segmento alla volta, attraverso un collegamento che di volta in volta è ritenuto il migliore. In questo modo diversi frammenti possono prendere strade diverse e arrivare a destinazione in modo disordinato; il protocollo riassembla allora i frammenti in sequenza al loro punto di destinazione (riassemblaggio).

Il formato dell'header del pacchetto IP è mostrato nella figura sottostante:

 

header_ip.png

Il significato dei campi del pacchetto IP è il seguente:

- Versione: è il numero di versione del protocollo IP che ha generato il pacchetto (attualmente il valore è 4 corrispondente a IPv4); se il computer ricevente non può gestire la versione del protocollo IP specificata nel campo Version, il pacchetto viene semplicemente scartato. La lunghezza del campo è di 4 bit;

- Lunghezza Header (Header Length): è la lunghezza dell'header IP, variabile in funzione del campo option, espressa come numero di parole da 32 bit; tutti i campi in un pacchetto IP sono infatti di lunghezza fissa, eccetto i campi Options e Padding. Il campo Length viene sottratto dal campo Packet Length per determinare dove cominciano i dati, definendo quindi la linea divisoria tra l’intestazione e la porzione dei dati del pacchetto.

- Service type (TOS): specifica come un protocollo di livello superiore vuole che il pacchetto sia trattato; include al suo interno i cinque sottocampi: Precedence, Delay, Throughput e Reliability. Il sottocampo Precedence, lungo 3 bit, stabilisce l’importanza di un datagramma. Può variare da un valore zero (normale) ad un valore 7 (controllo di rete). Più il numero è alto e più il pacchetto è importante. Teoricamente, i pacchetti a priorità più alta dovrebbero essere instradati verso l’indirizzo di destinazione più velocemente rispetto a quelli con priorità inferiore. I sottocampi Delay, Throughput e Reliability specificano tutti il trasporto desiderato per il pacchetto; generalmente sono tutti impostati a 0. Se sono invece impostati ad 1, indicano che si desidera un basso ritardo, un alto throughput ed un’alta attendibilità. Su IPv4 gli ultimi due bit del campo Service Type sono inutilizzati.

- Lunghezza totale (Packet Length): è la lunghezza del pacchetto IP (header più dati) in byte;

- Identificazione: questo campo contiene un numero intero che identifica il pacchetto; è usato per permettere il riassemblaggio di un pacchetto frammentato; se un pacchetto originale è suddiviso in più frammenti, ciascuno di questi frammenti ha un identico campo Identification.

- Flag: specifica se un pacchetto può essere frammentato e se si tratta dell'ultimo frammento di un pacchetto. Si trattadi un campo lungo 3 bit, il primo dei quali è inutilizzato in Ipv4. Il secondo è il bit Don’t Fragment (DF) e il terzo è il bit More Fragments (MF). Se il bit DF è impostato su 1, il datagramma non può essere frammentato. Il bit MF indica che il pacchetto corrente è seguito da altri pacchetti: nell’ultimo pacchetto, infatti, il bit MF è impostato a 0. Ciò significa che a seguire non vi sono ulteriori pacchetti.

- Offset del frammento (Fragment Offset): è l'offset del frammento in multipli di 8 byte, utilizzato in associazione con il bit MF durante il riassemblaggio del pacchetto frammentato. Quando l’host destinatario riceve i pacchetti frammentati non in sequenza, il bit MF, il campo Identification ed il campo Fragment Offset sono fondamentali nel meccanismo di ricomposizione. Il valore offset si basa sempre sull’inizio del messaggio. Ad esempio, se un pacchetto da 1500 byte deve essere suddiviso in frammenti non più grandi di 700 byte, il primo frammento riceverà in assegnazione lo stesso ID del pacchetto originale da 1500 byte. Il bit MF sarà impostato su 1 ed il campo Fragment Offset sarà impostato su 0. Il secondo frammento avrà lo stesso ID del pacchetto originale ed avrà ancora il bit MF impostato su 1. Il campo Fragment Offset per il secondo frammento sarà invece impostato su 700. Il frammento conclusivo avrà sempre lo stesso ID del pacchetto originale, il bit MF sarà impostato su 0 (poiché non seguiranno altri frammenti), il valore Fragment Offset sarà impostato su 1400;

- Tempo di vita (Time to live): è un contatore che viene decrementato con il passaggio del tempo; quando il contatore arriva a zero il pacchetto viene scartato. Permette di eliminare i pacchetti che, a causa di un malfunzionamento, sono entrati in loop; in tal caso all’host mittente giunge un messaggio (tramite protocollo ICMP) informativo sul pacchetto scartato, pertanto sarà necessario inviarlo una seconda volta; costituisce il numero massimo di router che possono essere attraversati dal datagramma prima di giungere a destinazione.

- Protocollo (Protocol): identifica il protocollo di livello superiore contenuto nel campo dati del pacchetto. Questo campo aiuta nello spostamento del pacchetto in su fino al protocollo corretto nel modello a strati TCP/IP. Un numero di identificazione del protocollo (Protocol Indentification Number, PIN) assegnato dal Network Information Center (NIC, la scheda di rete) rappresenta ciascun protocollo. Ad esempio, ICMP è il protocollo numero 1; TCP è il protocollo numero 6;

- Header checksum: è un campo utilizzato per controllare che l'header IP sia corretto; la somma di controllo vale soltanto per la porzione dell’intestazione del pacchetto e non è calcolata sull’intero pacchetto. Il valore Header Checksum deve essere ricalcolato presso ogni router che il pacchetto attraversa, perché il campo TTL decresce per ciascun router attraversato.

- Indirizzo sorgente e indirizzo destinazione (Source Address – Destination Address): sono gli indirizzi IP di mittente e destinatario, entrambi su 32 bit;

- Option: è un campo usato dall'IP per fornire le seguenti opzioni (ognuna lunga 8 bit):

  • option-type (1 byte) è un valore che indica il tipo del campo Options. Si suddivide in

    • copied flag (1 bit) indica se, nel caso di frammentazione, il campo Options deve essere copiato (1) o meno (0) in tutti i frammenti;

    • option class (2 bit) indica la classe di opzioni; con 0 l’opzione ha a che fare con un controllo del datagramma o della rete, con 2 l’opzione è a scopo di debug o di misurazione.

    • option number (5 bit) indica il numero dell’opzione all’interno della classe. Di particolare interesse sono le opzioni 3 e 9 che abilitano la registrazione dell’instradamento, rispettivamente loose e strict. L’instradamento loose fornisce una serie di indirizzi IP attraverso cui deve passare la macchina, ma permette un qualsiasi percorso per giungere a questi indirizzi, generalmente un gateway. L’instradamento di tipo strict non abilita deviazioni dal percorso specificato. Se il percorso non può essere seguito il datagramma viene abbandonato.

  • option-length (1 byte) è un valore eventuale che indica la lunghezza totale delle opzioni (nel caso in cui le stesse siano più lunghe di un byte - dipende dal tipo), cioè dell’intero campo Options;

  • option-data (n byte) è un’eventuale serie di informazioni specifiche per ogni tipo di opzione.

(0 Votes)