vuoi
o PayPal
tutte le volte che vuoi
Traduzione degli indirizzi di rete
Sappiamo che ogni dispositivo IP richiede un indirizzo. La proliferazione di sottoreti
sembrerebbe implicare che ogni volta che una di queste vuole installare una rete
locale per connettere più macchine, l’ISP debba allocare un intervallo di indirizzi per
coprire tutte le macchine della sottorete. Di conseguenza, al suo crescere dovrebbe
esserle allocato un blocco maggiore di indirizzi. Ma che cosa dovrebbe sapere il
normale utente per gestire gli indirizzi IP? Fortunatamente esiste la traduzione degli
indirizzi di rete (NAT).
figura 4.20
La mostra l’attività
di un router, abilitato NAT, con
un’interfaccia che fa parte
della rete domestica. Come
visto in precedenza, le quattro
interfacce della rete hanno lo
stesso indirizzo di sottorete,
10.0.0.0/24. Lo spazio
d’indirizzamento 10.0.0.0/8 è
una rete delle tre parti dello
spazio di indirizzi IP riservato
alle reti private, o reame con
indirizzi privati: ossia, una rete
i cui indirizzi hanno significato solo per i dispositivi interni. In effetti, esistono centinaia
di migliaia di reti private, molte delle quali usano un identico spazio d’indirizzamento,
10.0.0.0/24, per scambiare pacchetti fra i loro dispositivi. Ovviamente, quelli inviati
sull’internet globale non possono utilizzare questi indirizzi come origine o destinazione.
Ma se gli indirizzi privati hanno significato solo all’interno di una data rete, come viene
gestito l’indirizzamento dei pacchetti relativi all’internet globale, in cui gli indirizzi sono
necessariamente univoci?
I router abilitati alla NAT non appaiono come router al mondo esterno, ma si
figura,
comportano come un unico dispositivo con un unico indirizzo IP. Nella tutto il
traffico che lascia il router domestico verso Internet ha l’indirizzo IP origine
138.76.29.7, e tutto il traffico in entrata deve avere lo stesso indirizzo come
destinazione. In sostanza, il router abilitato alla NAT nasconde i dettagli della rete
domestica al mondo esterno. Contestualmente, ci si potrebbe chiedere dove i
calcolatori della rete domestica ottengano i propri indirizzi e dove il router acquisisca il
proprio indirizzo IP. Spesso, la risposta è DHCP. Il router ottiene il proprio indirizzo dal
server DHCP dell’ISP, e manda in esecuzione un server DHCP per fornire gli indirizzi ai
calcolatori all’interno dello spazio d’indirizzamento della rete domestica.
Se tutti i datagrammi in arrivo al router NAT dalla rete geografica hanno lo stesso
indirizzo IP destinazione, allora come apprende il router a quale host interno un dato
datagramma dovrebbe essere inoltrato? Il trucco consiste nell’utilizzare una tabella di
traduzione NAT nel router NAT e includere nelle righe di tale tabella i numeri di porta e
gli indirizzi IP.
NAT ha conosciuto un’ampia diffusione negli ultimi anni anche se è stato molto
contestato. Infatti argomentano che i numeri di porta sono stati concepiti per essere
utilizzati nei processi d’indirizzamento, e non per individuare gli host. La cosa può
infatti causare problemi ai server in esecuzione su reti domestiche dato che i processi
server attendono richieste in ingresso su numeri di porta prestabiliti. In secondo luogo,
i router dovrebbero elaborare i pacchetti solo fino al livello 3. In terzo luogo, NAT viola
il cosiddetto argomento punto-punto: gli host dovrebbero comunicare tra loro
direttamente, senza intromissione di nodi né modifica di indirizzi IP e numeri di porta.
NAT è diventato un importante componente di Internet. 1
ICMP
Internet Control Message Protocol
Ricordiamo che il livello di rete di Internet presenta tre componenti principali: il
protocollo IP, i protocolli d’instradamento Internet (tra cui: RIP, OSPF e BGP) e ICMP.
ICMP viene usato da host e router per scambiarsi informazioni a livello di rete:il suo
uso più tipico è il report degli errori.
ICMP è spesso considerato parte di IP, ma dal punto di vista dell’architettura si trova
esattamente sopra IP, dato che i suoi messaggi vengono trasportati nei datagrammi
IP: ossia, i messaggi ICMP vengono trasportati come carico utile IP, esattamente come
i segmenti TCP o UDP. Allo stesso modo, se un host riceve un datagramma IP che
specifica ICMP come protocollo di livello superiore, allora effettua il de multiplexing dei
contenuti del datagramma ICMP, esattamente come farebbe per contenuti TCP o UDP.
I messaggi ICMP hanno
un campo tipo e un
campo codice, e
contengono
l’intestazione e i primi 8
byte del datagramma IP
che ha provocato la
generazione del
messaggio. Alcuni tipi di
messaggio ICMP sono
figura.
mostrati in
Notiamo che i messaggi
ICMP non vengono usati
soltanto per segnalare
condizioni d’errore.
Infatti essi possono
essere usati per:
Segnalare che la
destinazione di
un pacchetto non è conosciuta o che un pacchetto è troppo grande ma non
deve essere frammentato e quindi non può essere consegnato;
Avvertire che un pacchetto viene scartato perché il contatore del tempo di vita
si è azzerato;
Avvertire il mittente di rallentare la trasmissione, in caso di congestione;
Avvertire il mittente che c’è una strada migliore per raggiungere la
destinazione, in modo che il mittente la memorizzi nella tabella di routing per
usarla successivamente;
Controllare se una destinazione è raggiungibile e attiva; la destinazione
risponde con un messaggio Echo Reply;
Misurare le prestazioni della rete facendo in modo che il tempo di arrivo della
richiesta e il tempo di richiesta e il tempo di partenza della risposta vengano
registrati nella risposta del destinatario.
Ricordiamo che i messaggi ICMP si appoggiano sul protocollo IP, cioè vengono
incapsulati in pacchetti IP. 2
IPv6
Nei primi anni novanta, l’Internet Engineering Task Force diede inizio allo sviluppo del
successore di IPv4. Una prima motivazione di tale sforzo era legata alla considerazione
che lo spazio d’indirizzamento IP a 32 bit stava cominciando a esaurirsi, dato che
nuove sottoreti e nuovi nodi IP venivano connessi a Internet con molta frequenza. Per
soddisfare l’esigenza di un grande spazio d’indirizzamento venne sviluppato un nuovo
protocollo: IPv6.
Formato dei datagrammi IPv6 figura
La mostra il formato dei
datagrammi IPv6, in cui sono
stati operati i cambiamenti più
significativi.
Possibilità
d’indirizzamento. IPv6
aumenta la dimensione
dell’indirizzo IP da 32 bit
a 128 bit, in modo che
gli indirizzi IP diventano
praticamente
inesauribili. In aggiunta
agli indirizzi unicast e multi cast, IPv6 ha introdotto un nuovo tipo, detto
indirizzo anycast, che consente di consegnare un datagramma a un qualsiasi
host all’interno di un gruppo.
Intestazione efficiente a 40 byte a linea di flusso. Una serie di campi IPv4 sono
stati eliminati o resi opzionali. La risultante intestazione a 40 byte e a lunghezza
fissa consente una più rapida elaborazione dei datagrammi IP, mentre una
nuova codifica delle opzioni ne consente l’elaborazione in maniera più flessibile.
Etichettatura e priorità di flusso. IPv6 presenta una definizione elusiva di flusso.
Ad esempio la trasmissione audio e video potrebbe essere trattata come un
flusso,così come il traffico ad alta priorità di un utente che paga per avere un
servizio preferenziale; ma non sono considerate come flusso le applicazioni più
tradizionali, quali il trasferimento di file e la posta elettronica. Inoltre,
l’intestazione IPv6 presenta un campo di classe di traffico a 8 bit che, può
essere utilizzato per attribuire priorità a determinati datagrammi di un flusso o
provenienti da specifiche applicazioni (ICMP) rispetto a quelli di altri servizi.
Sono definiti i seguenti campi:
Versione. Campo a 4 bit che identifica il numero di versione IP
Classe di traffico. Campo a 8 bit
Etichetta di flusso. Campo a 20 bit utilizzato per identificare un flusso di
datagrammi.
Lunghezza del carico utile. Questo valore a 16 bit è trattato come un intero
senza segno e indica il numero di byte nel datagramma IPv6 che seguono
l’intestazione a lunghezza fissa da 40 byte.
Intestazione successiva. Campo che identifica il protocollo cui verranno
consegnati i contenuti del datagramma.
Limite di hop. Il contenuto di questo campo è decrementato di 1 da ciascun
router che inoltra il datagramma. Quando il suo valore raggiunge 0, il
datagramma viene eliminato.
Indirizzi origine e destinazione. 3
Dati. Carico utile che viene passato al protocollo specificato nel campo
intestazione successiva quando il datagramma IPv6 raggiunge la sua
destinazione.
Confrontando il formato IPv6 con quello IPv4 notiamo che sono stati eliminati vari
campi di IPv4.
Frammentazione/riassemblaggio. IPv6 non consente frammentazione né
riassemblaggio presso i router intermedi; queste operazioni possono essere
effettuate soltanto da origine o destinazione. Se un router riceve un
datagramma IPv6 che risulta troppo grande per essere inoltrato sul
collegamento d’uscita, non fa altro che eliminarlo e inviare al mittente un
messaggio d’errore ICMP “Pacchetto troppo grande”. Il mittente può quindi
inviare nuovamente i dati, con una dimensione di datagramma IP inferiore. La
frammentazione e il riassemblaggio sono operazioni che consumano tempo;
trasferire l’onere di questa funzionalità dai router ai sistemi terminali rende
assai più rapido l’instradamento IP all’interno della rete.
Checksum dell’intestazione. Poiché i protocolli Internet a livello di trasporto e di
collegamento calcolano la checksum, i progettisti di IP hanno probabilmente
ritenuto questa funzionalità talmente ridondante nel livello di rete da decidere
di rimuoverla.
Opzioni. Il campo opzioni non fa più parte dell’intestazione IP standard, anche
se non è del tutto scomparso. Infatti è una delle possibili intestazioni successive
cui punta l’intestazione IPv6.
Ricordiamo che i nodi IP utilizzano ICMP per riportare condizioni di errore e fornire
informazioni a un sistema terminale. 4
Passaggio da IPv4 a IPv6
Consideriamo ora il passaggio da IPv4 a IPv6. Il problema è che, mentre i nuovi sistemi
IPv6 sono retro compatibili, ossia sono in grado di inviare, instradare e ricevere
datagrammi IPv4, i sistemi IPv4 esistenti non sono in grado di gestire datagrammi
IPv6.
Il metodo più pratico consiste in un approccio a doppia pila, che prevede
l’implementazione di un nodo detto IPv6/IPv4, capace d’inviare e ricevere sia
datagrammi IPv4 sia IPv6. Inoltre deve disporre di indirizzi validi per entrambi i
protocolli ed essere in grado di distinguere i nodi IPv4 da quelli IPv6. Questo
problema può essere risolto utilizzando il DNS, che può restituire un indirizzo IPv6
o IPv4 a seconda del tipo di nodo. Ovviamente con un approccio a doppia pila, se
mittente o destinatario dispongono solo di IPv4, utilizzeremo esclusivamente
datagrammi adeguati a questo protocollo. Ma è anche possibile che due nodi IPv6
Vedi figura.
alla fine si scambino datagrammi IPv4.
Una strada alternativa è rappresentata dal tunneling, che può risolvere il
precedente problema. L’idea alla base del tunneling è la seguente. Supponiamo
che due nodi IPv6 vogliano utilizzare datagrammi IPv6, ma siano connessi da un
insieme di router intermedi IPv4, che chiameremo tunnel. Vedi figura. Il nodo B, al
lato d’invio del tunnel, prende l’intero datagramma IPv6 pervenutogli da A, e lo
pone nel campo dati di un datagramma Ipv4. Quest’ultimo viene quindi
indirizzato al nodo E, al lato di ricezione del tunnel, e inviato al primo nodo nel
tunnel (C). I router IPv4 intermedi instradano il datagramma IPv4, ignari che
questo contenga un datagramma IPv6 completo. Il nodo IPv6, sul lato di ricezione
del tunnel, riceverà quindi il datagramma IPv4, determinerà che questo ne
contiene uno IPv6, lo estrarrà e lo instraderà esattamente come se l’avesse
ricevuto da un nodo IPv6 adiacente. 5
DNS
Gli host Internet possono essere identificati in vari modi. I nodi degli host (hostname)-
quali www.corrieredellasera.com – risultano abbastanza appropriati per l’uomo, ma
forniscono ben poca informazione sulla loro collocazione all’interno di Internet. Un