Protocollo Internet (IP): inoltro e indirizzamento in Internet
Adesso ci concentreremo sulle modalità d’indirizzamento e d’inoltro in Internet, cioè nell’ambito dell’Internet Protocol (IP).
Attualmente sono in uso due versioni di IP: il protocollo IP versione 4, ampiamente adottato, detto IPv4 e la versione 6 di IP, proposta in sostituzione di IPv4.
Consideriamo i componenti di Internet a livello di rete.
Come mostrato in figura, il primo è il protocollo IP, il secondo è il protocollo d’instradamento, che determina il percorso che i datagrammi seguiranno per giungere a destinazione e l’ultimo è costituito dalla capacità di riportare gli errori nei datagrammi e di rispondere a determinate richieste di informazioni a livello di rete.
Formato dei datagrammi
Un pacchetto a livello di rete viene detto datagramma.
I principali campi dei datagrammi IPv4 sono i seguenti:
- Numero di versione. Questi quattro bit, che specificano la versione del protocollo IP del datagramma, consentono al router la corretta interpretazione del datagramma; infatti, versioni diverse di IP hanno differenti formati per i datagrammi.
- Lunghezza dell’intestazione. Un datagramma IPv4 può contenere un numero variabile di opzioni (incluse nell’intestazione), e questi 4 bit indicano dove iniziano effettivamente i dati del datagramma. La maggior parte dei datagrammi IP non contiene opzioni, pertanto il tipico datagramma IP ha un’intestazione di 20 byte.
- Tipo di servizio. I bit relativi al tipo di servizio (TOS) sono stati inclusi nell’intestazione IPv4 per distinguere diversi tipi di datagrammi. Spesso è utile distinguere datagrammi in tempo reale (usati nelle applicazioni di telefonia) da altro traffico (ad esempio, FTP).
- Lunghezza del datagramma. Rappresenta la lunghezza totale del datagramma IP, intestazione più dati, misurata in byte. Poiché questo campo è lungo 16 bit, la massima dimensione dei datagrammi IP è 65535 byte, anche se raramente questi superano i 1500.
- Identificatore, flag, spiazzamento di frammentazione. Questi tre bit hanno a che fare con la cosiddetta frammentazione. Occorre rilevare che IPv6 non consente frammentazione presso i router.
- Tempo di vita. Il campo time-to-live (TTL) è stato incluso per assicurare che i datagrammi non restino in circolazione per sempre nella rete. Questo campo viene decrementato di una unità ogni volta che il datagramma è elaborato da un router, e quando raggiunge 0 il datagramma deve essere eliminato.
- Protocollo. Questo campo è usato solamente quando il datagramma raggiunge la destinazione finale. Il valore del campo indica lo specifico protocollo a livello di trasporto al quale vanno passati i dati del datagramma. Ad esempio, il valore 6 indica che i dati sono destinati a TCP, mentre il valore 17 designa UDP. Il numero di protocollo nel datagramma IP ha un ruolo analogo a quello del campo numero di porta nel segmento a livello di trasporto. Il numero di protocollo è l’anello di collegamento tra i livelli di rete e di trasporto, mentre il numero di porta è il “collante” che lega i livelli di trasporto e di applicazione.
- Checksum dell’intestazione. Consente ai router di rilevare gli errori sui bit nei datagrammi ricevuti. È calcolata trattando ogni coppia di byte dell’intestazione come numeri che sono poi sommati in complemento a 1. Un router calcola tale valore per ciascun datagramma IP ricevuto e rileva una condizione di errore se la checksum trasportata nell’intestazione del datagramma non corrisponde a quella calcolata. I router normalmente scartano i datagrammi in cui si verifica un errore. Notiamo che la checksum deve essere calcolata e memorizzata su ogni router, come anche il campo TTL e i campi opzione, che possono cambiare.
- Indirizzi IP d’origine e destinazione. Quando un host crea un datagramma, inserisce il proprio indirizzo IP nel campo indirizzo IP origine e quello della destinazione nel campo indirizzo