La rete Internet con cui abbiamo a che fare ogni giorno, la così
detta “rete” per antonomasia, è in
effetti una super-rete che collega reti indipendenti tra loro e disomogenee,
cioè operanti con protocolli diversi. Un computer, quindi, può essere collegato
direttamente a internet, come può appartenere a una LAN (per esempio Ethernet o
Token Ring), a una rete basata su Frame Relay, a una rete telefonica su base
geografica, a una rete metropolitana in fibra ottica, e collegarsi tramite la
sua rete di appartenenza a Internet.
Lo scambio di dati su internet avviene in prevalenza tramite
il protocollo TCP/IP. La spina dorsale della rete sono i router, che hanno il
compito di ricevere i dati dai vari computer (gli host) e instradarli, di
router in router, alla rete di destinazione finale, dove poi verranno inviati
all’host di destinazione finale.
Come fanno i router a trasportare correttamente
l’informazione dal computer di una rete al computer in una rete all’altro capo
del mondo? Ovviamente grazie a
quell’indirizzo che inseriamo nella barra del nostro browser. Ma questo non ci
dice molto, se non si introduce il concetto di Domain Name System (DNS).
Anzitutto bisogna precisare che ogni computer collegato alla
rete internet, cioè ogni host è identificato da un indirizzo unico e diverso da
tutti gli altri. È vietato cambiare arbitrariamente l’indirizzo di un host, a
meno che questo non avvenga esclusivamente nell’ambito di una rete non
collegata ad altre reti.
La struttura che governa il Domain Name System è gerarchica
e un punto separa l’autorità di livello superiore (per esempio “it”, “org”, “edu”) da quella
inferiore (per esempio “depaolalucio”,
“inps”, “unina” ecc. Procedendo in questo modo, ad esempio, l’indirizzo “usr.istruzione.lombardia.gov.it”, che indica
il Ministero dell’Istruzione – Ufficio Scolastico per la Lombardia, identifica
un host appartenente al dominio Italia (it),
nell’ambito di questo al sotto-dominio degli Enti Governativi Italiani (gov), quindi al sotto-sotto dominio Uffici
Governativi della Lombardia, poi al sotto-dominio istruzione e infine nell’ambito di questo vi è l’host usr.). Ovviamente, non bisogna
confondere un dominio con una sotto-rete, perché, ad esempio, il dominio it (che a rigor di logica è anch’esso un
sotto-dominio) non identifica una rete particolare, in quanto in esso sono contenute
tante reti indipendenti.
La traduzione degli indirizzi dalla forma mnemonica a quella
digitale avviene in una molteplicità di servers, detti Name Server, collegati e cooperanti tra loro. Se l’host non
possiede nella propria memoria l’indirizzo digitale corrispondente a quello mnemonico
inserito dall’utente e se non possiede neanche l’indirizzo di un server dei
domini di livello superiore menzionati in quell’indirizzo, interroga il name server della sua zona, il quale, se
non è in grado di risolvere l’indirizzo, chiederà al Root Server, che è al top della piramide dei name server, le informazioni per accedere in maniera top-down ai
sotto-domini da risolvere, fino all’host di destinazione (nell’esempio di cui
sopra, il Root Server fornirà le
informazioni per l’interrogazione del server del dominio .it, il quale fornirà l’indirizzo di un name server del
sotto-dominio .gov ecc., fino ad
arrivare alla risoluzione dell’indirizzo dell’host usr.
L’host riceverà l’indirizzo e lo memorizzerà nella sua cache
per il futuro.
L’indirizzo mnemonico che noi inseriamo nella barra degli
indirizzi, tuttavia, non è scritto in una lingua adatta a un computer e infatti
il protocollo DNS provvede a tradurre questo indirizzo mnemonico in un
indirizzo binario, cioè fatto di 0 e 1.
L’indirizzo IP (più precisamente l’IPv4, come distinto dal
più recente IPv6, che ha una notazione diversa) in effetti è composto da una
stringa di 32 bit, divisi in quattro ottetti. Per comodità può essere espresso
in notazione decimale, nella così detta forma dotted. Per esempio, digitando nella barra degli indirizzi http://93.63.43.48 si accede al sito dell’INPS,
mentre l’indirizzo 62.101.76.232 corrisponde al sito del gestore Fastweb. In
forma binaria i due indirizzi di cui sopra sono rispettivamente 01011111.00111111.00101011.00110000
e 00111110.01100101.01001100.11101000.
Gli indirizzi IP si dividono in quattro classi:
-
Indirizzi che in binario iniziano con 0. Il
primo byte identifica la rete, per cui questo gruppo può indirizzare al massimo
126 reti (perché 0 e 128 sono riservati). Gli altri tre ottetti indirizzano gli
host all’interno di una di queste reti, che può quindi ospitare fino a
16.777.216 host. Questi indirizzi, in notazione decimale, hanno come primo
campo un numero compreso tra 0 e 127.
Le due reti di cui agli esempi
sopra citati appartengono quindi a questa classe.
-
Indirizzi che iniziano con 10. I restanti 14 bit
dei primi due byte identificano la rete, mentre i secondi due byte identificano
l’host all’interno della rete. Le reti indirizzabili sono quindi 16.384,
all’interno di ognuna di esse possono esservi fino a 65.536 host. Questi
indirizzi, in notazione decimale, hanno come primo campo un numero compreso tra
128 e 191.
-
Indirizzi che iniziano con 110. I restanti 21
bit identificano la rete, per un totale di 2.097.152 reti. Il quarto byte
identifica un computer nella rete, che potrà quindi ospitare non più di 256
host. Questi indirizzi, in notazione decimale, hanno come primo campo un numero
compreso tra 192 e 223.
Altre classi sono dedicate ad applicazioni multicast o
riservate per usi futuri.
Con l’organizzazione e la struttura degli indirizzi sopra
descritti sembra che non manchi nient’altro ad un qualsiasi host per scambiare dati con un
qualsiasi altro host tramite internet. Giusto?
Sarebbe giusto, senonché molte reti, specialmente se di
grandi dimensioni, si compongono a loro volta di diverse sotto-reti. Occorre
quindi prima individuare la sotto-rete e poi l’host di destinazione all’interno
della sotto-rete. Per fare ciò l’indirizzo IP non basta e per questo motivo
spesso vediamo indicato a fianco ad esso anche la Subnet Mask.
Questa consiste in un campo di 32 bit di valore 1, se
corrispondenti a quella parte dell’indirizzo IP che si riferisce alla rete o
alla sotto-rete, e di valore 0 se corrispondente a quella parte dell’indirizzo
IP che identifica un host. La maschera di rete è quindi indispensabile per determinare
quale parte dell’indirizzo IP si riferisce alla sottorete e quale all’host.
Esempio: la subnet mask sia 11111111.11111111.11111000.00000000,
che in decimale è 255.255. 248.0. Ricordiamo che, alla luce di quanto ora
detto, la struttura di un indirizzo IP è (indirizzo
di rete + indirizzo di sottorete + indirizzo di host). Se, per esempio,
abbiamo un indirizzo di classe B, i primi due byte indicano la rete. Nel terzo
campo i primi cinque bit indicano la sottorete. Supponiamo che l’indirizzo del
nostro esempio sia 180.1.26.3, che in binario è 10110100.00000001.00001110.00000011.
Sappiamo che 180.1 indica la rete, mentre la subnet mask sopra indicata ci dice
che la sotto-rete ha indirizzo binario 00001, cioè in decimale 110.
I restanti bit 1110.00000011 indicano l’indirizzo dell’host nella sottorete.
Il protocollo IPv4, tuttavia, è destinato ad uscire di scena nell'arco di qualche anno, di pari passo con l'obsolescenza degli apparati attualmente operativi, in quanto i computer indirizzabili con 32 bit sono circa 4.3 miliardi (2 alla 32) e i relativi indirizzi sono ormai quasi tutti assegnati. È già stato introdotto, infatti, il protocollo IPv6, che gradualmente sostituirà l'IPv4.
Il principale vantaggio che si ottiene è l'enorme numero di host che cosi' si possono indirizzare. Infatti il protocollo IPv6 prevede 128 bit, cioè 16 byte, con i quali si possono indirizzare 2 alla 128 computer, come dire, su scala umana, una quantità praticamente infinita. La notazione usata con l'IPv6 è quella esadecimale, in quanto la notazione dotted decimal dell'IPv4 risulterebbe scomoda, data la lunghezza dell'indirizzo.
Quindi si hanno 8 coppie di byte, indicate in notazione esadecimale e separate da due punti:
28e6:8c42:0000:0000:2536:1180:016a:ffff. Per esempio, la prima coppia (28e6) in esadecimale equivale a 1045410 in notazione decimale e a 0010100011100000.
Per semplificare la notazione gli zeri si possono omettere secondo certi criteri, ma questo la rende non univoca. Per esempio, l'indirizzo di cui sopra si potrebbe anche scrivere omettendo gli zeri: 28e6:8c42:0:0:2536:1180:016a:ffff o anche: 28e6:8c42::2536:1180:016a:ffff
Data la lunghezza dell'indirizzo, anche la maschera di rete nel protocollo IPv6 differisce da quella in uso per l'IPv4 e infatti si indica soltanto, in coda all'indirizzo, quanti bit sono dedicati all'individuazione della rete: 28e6:8c42:0000:0000:2536:1180:016a:ffff/60. In questo esempio, la quinta coppia di byte è 2536, che in binario equivale a 0010010100110110. Le ultime tre coppie di byte 1180, 016a e ffff) forniscono 48 bit, mentre gli altri dodici bit per arrivare a sessanta sono forniti dalla coppia 2536 e cioè dai bit indicati in corsivo: 0010010100110110.
In conclusione, la rete 28e6:8c42:0000:0000:1000:0000:0000:0000 (si noti che la quinta coppia è nient'altro che 0010000000000000, cioè la coppia iniziale, avendo posto a zero tutti i bit che identificano l'host e non la rete) contiene gli indirizzi di host da 28e6:8c42:0000:0000:1000:0000:0000:0000 fino a 28e6:8c42:0000:0000:2fff:ffff:ffff:ffff
Il protocollo IPv4, tuttavia, è destinato ad uscire di scena nell'arco di qualche anno, di pari passo con l'obsolescenza degli apparati attualmente operativi, in quanto i computer indirizzabili con 32 bit sono circa 4.3 miliardi (2 alla 32) e i relativi indirizzi sono ormai quasi tutti assegnati. È già stato introdotto, infatti, il protocollo IPv6, che gradualmente sostituirà l'IPv4.
Il principale vantaggio che si ottiene è l'enorme numero di host che cosi' si possono indirizzare. Infatti il protocollo IPv6 prevede 128 bit, cioè 16 byte, con i quali si possono indirizzare 2 alla 128 computer, come dire, su scala umana, una quantità praticamente infinita. La notazione usata con l'IPv6 è quella esadecimale, in quanto la notazione dotted decimal dell'IPv4 risulterebbe scomoda, data la lunghezza dell'indirizzo.
Quindi si hanno 8 coppie di byte, indicate in notazione esadecimale e separate da due punti:
28e6:8c42:0000:0000:2536:1180:016a:ffff. Per esempio, la prima coppia (28e6) in esadecimale equivale a 1045410 in notazione decimale e a 0010100011100000.
Per semplificare la notazione gli zeri si possono omettere secondo certi criteri, ma questo la rende non univoca. Per esempio, l'indirizzo di cui sopra si potrebbe anche scrivere omettendo gli zeri: 28e6:8c42:0:0:2536:1180:016a:ffff o anche: 28e6:8c42::2536:1180:016a:ffff
Data la lunghezza dell'indirizzo, anche la maschera di rete nel protocollo IPv6 differisce da quella in uso per l'IPv4 e infatti si indica soltanto, in coda all'indirizzo, quanti bit sono dedicati all'individuazione della rete: 28e6:8c42:0000:0000:2536:1180:016a:ffff/60. In questo esempio, la quinta coppia di byte è 2536, che in binario equivale a 0010010100110110. Le ultime tre coppie di byte 1180, 016a e ffff) forniscono 48 bit, mentre gli altri dodici bit per arrivare a sessanta sono forniti dalla coppia 2536 e cioè dai bit indicati in corsivo: 0010010100110110.
In conclusione, la rete 28e6:8c42:0000:0000:1000:0000:0000:0000 (si noti che la quinta coppia è nient'altro che 0010000000000000, cioè la coppia iniziale, avendo posto a zero tutti i bit che identificano l'host e non la rete) contiene gli indirizzi di host da 28e6:8c42:0000:0000:1000:0000:0000:0000 fino a 28e6:8c42:0000:0000:2fff:ffff:ffff:ffff