Livello di rete protocollo IP

Livello di rete protocollo IP

Il livello di rete è il livello 3 del modello di riferimento ISO/OSI. A questo livello, Internet può essere vista come un insieme di sottoreti interconnesse: non esiste una vera e propria struttura, ma solo dorsali principali formate da linee a banda larga e router veloci. Alle dorsali si collegano le reti regionali, a cui si collegano le LAN di molte aziende, università e fornitori di servizi Internet. La colla che tiene unita Internet è il protocollo IP, che è stato progettato fin dall’inizio pensando alla comunicazione tra reti. Compito del protocollo IP è trasportare i datagrammi inviati da una sorgente a una destinazione, senza tener conto né della posizione delle macchine, che potrebbero trovarsi su reti diverse, né dell’eventuale presenza di reti intermedie.
protocollo ip
Internet Protocol (IP), è il protocollo fondante di Internet, e ha la funzione fondamentale di far transitare in rete i pacchetti, chiamati anche datagrammi, che contengono i dati. IP è un protocollo non orientato alla connessione: prima di inviare i pacchetti, IP non determina alcuna connessione logica tra le estremità comunicative e questo fa sì che i pacchetti transitino sulla rete in modo completamente indipendente gli uni dagli altri. Il solo protocollo IP non è quindi sufficiente per una comunicazione affidabile; il recupero degli errori o di dati persi è affidato al protocollo TCP, protocollo di livello 4 del modello ISO/OSI. Elemento fondamentale per il funzionamento del protocollo IP è l’indirizzo IP; infatti, poiché IP è un protocollo non orientato alla connessione, per viaggiare in rete i pacchetti devono contenere gli indirizzi del mittente e del destinatario; questi indirizzi, insieme ad altre informazioni di controllo, sono contenuti nella busta (preambolo o header) che precede il campo dati. Gli indirizzi IP quindi identificano univocamente un host all’interno della rete. Per svolgere il suo compito, IP esegue le seguenti funzioni fondamentali:

  • imbusta (encapsulation) i dat i che gli arrivano dal livello di trasporto (il livello 4) lato mittente;
  • fornisce un indirizzamento (addressing) ai pacchetti;
  • garantisce l’ instradamento dei pacchetti (routing);
  • permette lo spacchettamento dei pacchetti ricevuti: toglie la busta di livello 3 e passa i dati al livello di trasporto dal lato ricevente

imbustamento ip

 instradamento dei pacchetti (routing)

instradamento dei pacchetti (routing)


La versione 4 di IP (1Pv4), ancora oggi la più usata sure ti private e pubbliche. Gli indirizzi IPv4, a 32 bit, possono indirizzare circa 4 miliardi di host. Il protocollo IP aggiunge ai dati (payload) un header, della lunghezza minima di 20 byte, per formare il pacchetto (massimo 65535 byte) da inoltrare al livello Physical. I campi più importanti dell’header sono rappresentati dagli indirizzi IP del mittente e del destinatario.
header IP

  • Versione [4 bit] – Indica la versione del pacchetto IP: per IPv4, ha valore 4 (da qui il nome IPv4).
  • Internet Header Length (IHL) [4 bit] – Indica la lunghezza (in word da 32 bit) dell’header del pacchetto IP ovvero l’offset del campo dati; tale lunghezza può variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options;
  • Type of Service (TOS) [8 bit] – Nelle specifiche iniziali del protocollo, questi bit servivano all’host mittente per specificare il modo e in particolare la precedenza con cui l’host ricevente doveva trattare il datagramma:
    • bit 0-2: Precedenza
    • bit 3: Latenza (0 = normale, 1 = bassa)
    • bit 4: Throughput (0 = normale, 1 = alto)
    • bit 5: Affidabilità (0 = normale, 1 = alta)
    • bit 6-7: Riservati per usi futuri
ad esempio un host poteva scegliere una bassa latenza, mentre un altro preferire un’alta affidabilità. Nella pratica questo uso del campo TOS non ha preso largamente piede.
  • Total Length [16 bit] – Indica la dimensione (in byte) dell’intero pacchetto, comprendendo header e dati; tale lunghezza può variare da un minimo di 20 byte (header minimo e campo dati vuoto) ad un massimo di 65535 byte. In ogni momento, ad ogni host è richiesto di essere in grado di gestire datagrammi aventi una dimensione minima di 576 byte mentre sono autorizzati, se necessario, a frammentare datagrammi di dimensione maggiore.
  • Identification [16 bit] – Utilizzato, come da specifiche iniziali, per identificare in modo univoco i vari frammenti in cui può essere stato “spezzato” un pacchetto IP. Alcune sperimentazioni successive hanno però suggerito di utilizzare questo campo per altri scopi, come aggiungere la funzionalità di tracciamento dei pacchetti.
  • Flags [3 bit] – Bit utilizzati per il controllo del protocollo e della frammentazione dei datagrammi:
    • Reserved – sempre settato a 0. 
    • DF (Don’t Fragment) – se settato a 1 indica che il pacchetto non deve essere frammentato; se tale pacchetto non può essere inoltrato da un host senza essere frammentato, viene semplicemente scartato. Questo può risultare utile per “ispezionare” la capacità di gestione dei vari host del percorso dirouting.
    • MF (More Fragments) – se settato a 0 indica che il pacchetto è l’ultimo frammento o il solo frammento del pacchetto originario, pertanto tutti gli altri suoi frammenti hanno il bit MF settato a 1. Naturalmente, questo bit sarà sempre 0 anche in tutti i datagrammi che non sono stati frammentati.
  • Fragment Offset [13 bit] – Indica l’offset (misurato in blocchi di 8 byte) di un particolare frammento relativamente all’inizio del pacchetto IP originale: il primo frammento ha offset 0. L’offset massimo risulta pertanto pari a {displaystyle (2^{13}-1)times 8=} 65528 byte che, includendo l’header, potrebbe eccedere la dimensione massima di 65535 byte di un pacchetto IP.
  • Time to live (TTL) [8 bit] – Indica il tempo di vita (time to live) del pacchetto, necessario per evitarne la persistenza indefinita sulla rete nel caso in cui non si riesca a recapitarlo al destinatario. Storicamente il TTL misurava i “secondi di vita” del pacchetto, mentre ora esso misura il numero di “salti” da nodo a nodo della rete: ogni router che riceve il pacchetto prima di inoltrarlo ne decrementa il TTL (modificando di conseguenza anche il campo Header Checksum), quando questo arriva a zero il pacchetto non viene più inoltrato ma scartato. Tipicamente, quando un pacchetto viene scartato per esaurimento del TTL, viene automaticamente inviato un messaggio ICMP al mittente del pacchetto, specificando il codice di Richiesta scaduta; la ricezione di questo messaggio ICMP è alla base del meccanismo di traceroute.
  • Protocol [8 bit] – Indica il codice associato al protocollo utilizzato nel campo dati del pacchetto IP: per esempio al protocollo TCP è associato il codice 6, adUDP il codice 17, mentre ad IPv6 è associato il codice 41.
  • Header Checksum [16 bit] – È un campo usato per il controllo degli errori dell’header. Ad ogni hop, il checksum viene ricalcolato (secondo la definizione data in RFC 791) e confrontato con il valore di questo campo: se non c’è corrispondenza il pacchetto viene scartato. È da notare che non viene effettuato alcun controllo sulla presenza di errori nel campo Data deputandolo ai livelli superiori.
  • Source address [32 bit] – Indica l’indirizzo IP associato all’host del mittente del pacchetto.
  • Destination address [32 bit] – Indica l’indirizzo IP associato all’host del destinatario del pacchetto e segue le medesime regole del campo Source address.
  • Options – Opzioni (facoltative e non molto usate) per usi più specifici del protocollo, come informazioni sui router.
  • padding necessario a completare i 32 bit. Inoltre, nel caso in cui la lista di opzioni non coincida con la fine dell’header, occorre aggiungere in coda ad essa un marcatore EOL (End of Options List).

La frammentazione in IP

L’attraversamento di una rete da parte di un pacchetto deve sottostare a precise regole: ad esempio, ogni rete impone una dimensione massima ai pacchetti che l’attraversano. Tale limite può derivare dal valore massimo di memoria usata (buffer) nei router o dal tipo e dalla lunghezza di trame usate nel protocollo data link a cui IP si appoggia. In tutti i casi è compito dell’IP suddividere i messaggi in pacchett i più piccoli, dell’ordine di qualche kilobyte. I datagrammi frammentati vengono ricomposti dal nodo successivo nel datagramma originale e quindi passati al livello di trasporto. Questa tecnica di frammentazione consiste nell’assegnare a ogni frammento uno stesso numero, insieme a un flag posto a 0 per indicare che si tratta dell’ultimo frammento inviato.

frammentazione ip

La figura rappresenta un datagramma di 1500 byte frammentato in tre datagrammi


frammentazione

Leave a Reply


Latest Posts

AAA