...un metodo ingegnoso, semplice ed intelligente, per connettere
fra loro milioni di reti e miliardi di computers.
Mi sono sempre chiesto come sia possibile, con soli 4 bytes,
indirizzare 4,3 miliardi di computers (così si dice) ed un
numero impressionante di reti private (con relative sottoreti),
tutte connesse fra loro.
Il segreto sta nell'abbinamento dell'indirizzo IP alla SubNet
Mask, ossia nella distinzione di quali siano i Bit che
identificano l'indirizzo specifico di un computer, da quali
siano i Bit che specificano la rete di appartenenza.
Si potrebbe fare l'esempio degli indirizzi postali che
identificano miliardi di abitazioni in tutto il mondo: occorre
sia precisato sia la "Nazione e Città", (la rete), sia la "via e
numero civico", (ossia l'indirizzo).
Se si specificasse solo l'indirizzo (ad esempio: via Dante
Alighieri, 23) e non si specificasse la città (la rete), sarebbe
improbabile che la lettera sia recapitata.
Scriviamo un indirizzo IP, a caso: 192.168.15.3.
Di per sé, questo numero non indica nulla, perché non è univoca
quale sia la parte che identifica la rete dalla parte che
identifica il computer di quella rete.
In un indirizzo IP, composto da 4 byte (di 8 bit ognuno), la
SubNet Mask identifica e separa la parte indicante la rete,
dalla parte indicante quel computer specifico.
Ad esempio:
l'indirizzo IP: |
192.168. 15.3 |
avente SubNet Mask: |
255.255.255.0 |
specifica che ci riferiamo al computer con indirizzo 3,
(corrispondente al byte 0 della SubNet Mask), facente parte
della rete 192.168.15, (i 3 byte diversi da zero [255] della
SubNet Mask).
Indirizzi IP pubblici ed indirizzi IP privati.
Gli indirizzi IP si distinguono in indirizzi IP pubblici ed in
indirizzi IP privati, secondo che appartengano a reti pubbliche
o a reti private.
Gli indirizzi pubblici sono assegnati da un organismo
internazionale, affinché essi siano univoci in tutto il mondo e
non vi siano due computers aventi il medesimo numero IP
(immaginiamo i numeri telefonici delle reti pubbliche).
Gli indirizzi IP privati sono indirizzi che appartengono ad una
rete privata creata localmente e che connette computers fra loro
(immaginiamo i computers di un ufficio).
Questi indirizzi, appartenenti alla medesima rete, possono
essere identici anche ad altri indirizzi appartenenti ad altra
rete privata, però non vi sarà confusione fra essi, poiché
appartengono a reti private diverse (ad esempio: immaginiamo i
numeri di interno assegnati agli ingressi degli appartamenti nei
palazzi; ogni palazzo avrà i numeri di interno da 1 a 50
(secondo il numero degli alloggi), però ciò non crea confusione
con i medesimi numeri di interno che esistono in altri palazzi,
poiché trattasi di numerazione privata all'interno del palazzo).
Stesso concetto vale per la numerazione con indirizzo IP
all'interno di reti private, anche se interconnesse alla rete
internet, tramite Gateway con indirizzo pubblico.
Le Classi degli indirizzi IP.
Gli indirizzi IP pubblici sono suddivisi in "classi". È una
forma di classificazione.
La classe A: ha SubNet Mask 255.0.0.0, ossia i primi 8
bit.
A questa classe appartengono gli indirizzi da: 1.0.0.0 a
127.255.255.255,
quindi in essa si possono avere 127 reti, ognuna delle quali può
essere costituita da 16.777.214 computers.
Infatti (256 x 256 x 256) – 2 = 16.777.214.
La classe B: ha SubNet Mask: 255.255.0.0, ossia i primi
16 bit.
A questa classe appartengono gli indirizzi da: 128.0.0.0 a
191.255.255.255,
quindi si possono avere: (191-128+1) = 64 x 256 = 16384 reti
ognuna composta da (256 x 256) – 2 = 65534 computers.
La classe C: ha SubNet Mask 255.255.255.0, ossia i primi
24 bit.
A questa classe appartengono gli indirizzi da: 192.0.0.0 a
223.255.255.255,
quindi si possono avere (32 x 256 x 256) = 2.097152 reti da (256
– 2) = 254 computers ognuna.
La classe D e la classe E sono utilizzate per usi
particolari o futuri.
Tramite la NETMASK, le reti A, B, C possono essere ulteriormente
suddivise in sottoreti: "SubNetting".
Esempio:
con indirizzo IP: |
193.234. 24. 0 (Indirizzo pubblico di classe C), |
con NetMask: |
255.255.255.192 si ottengono due sottoreti: |
prima sottorete composta da 64 computers:
|
indirizzo di rete: 193.234.24.64 |
|
host dal numero: 193.234.24.65 al numero 193.234.24.126 |
|
indirizzo di broadcast: 193.234.24.127. |
seconda sottorete composta da 64 computers:
|
indirizzo di rete: 193.234.24.128 |
|
host dal numero: 193.234.24.129 al numero 192.234.24.190 |
|
indirizzo di broadcast: 193.234.24.191. |
Indirizzi IP per reti private.
In ogni classe, una porzione di indirizzi è riservata agli
indirizzi IP privati.
Classe A:
indirizzi da: 10.0.0.0 a 10.255.255.255 con subnetmask da 8 bit
(i primi 8 bit).
Classe B:
indirizzi da: 172.16.0.0 a 172.16.255.255 con subnetmask da 12
bit.
Classe C:
indirizzi da: 192.168.0.0 a 192.168.255.255 con subnetmask da 16
bit.
Prendendo ad esempio la classe C, avente la SubNet Mask a:
255.255.0.0, significa che trattandosi di rete privata è
possibile creare, secondo le proprie esigenze:
o un'unica rete che connetta (256 x 256) – 2 = 65.534 computers;
o due reti da (62 x 256) – 2 = 15870 PC ognuna;
o sei reti da (30 x 256) – 2 = 7678 PC ognuna;
o 254 reti da 254 computers ognuna (questa è la configurazione
classica che si ottiene mettendo il terzo byte a 255 e lasciando
a zero il quarto byte della SubNet Mask.
Inoltre, ognuna di queste reti (ad esempio ognuna delle 254 reti
da 254 computers) può essere ulteriormente suddivisa e composta
da ulteriori sottoreti più piccole, ad esempio:
2 sottoreti da 62 PC ognuna;
6 sottoreti da 30 PC ognuna;
14 sottoreti da 14 PC ognuna;
30 sottoreti da 6 PC ognuna.
Questo "miracolo" avviene attraverso la SubNet Mask.
La SubNet Mask.
Come funziona la SubNet Mask.
Quando si invia un messaggio ad un altro PC, il nostro computer
confronta l'indirizzo IP di destinazione con la propria SubNet
Mask ed effettua l'AND logico:
1 AND 1 = 1;
1 AND 0 = 0;
0 AND 1 = 0.
Se il risultato dell'operazione ottiene un numero binario che è
identico a quello che si ottiene facendo la medesima operazione
con proprio indirizzo IP, allora il computer sa che
quell'indirizzo appartiene alla propria rete, cosicché invia
normalmente il messaggio.
In caso contrario il PC capisce che quello non è un indirizzo
della propria rete ed invia il messaggio al computer che fa da
gateway verso le altre reti, se questi esiste, altrimenti il
messaggio viene perso.
Come si calcola la SubNet Mask.
Un esempio classico:
Indirizzo IP: 192.168.0.0
SubNet Mask: 255.255.255.0
Con questa SubNet Mask abbiamo una rete identificata da:
192.168.0 (.X), alla quale possono appartenere 254 computer: dal
numero 1 al numero 254, ad esempio:
192.168.0.0 indica l'indirizzo della rete
192.168.0. 1; (primo PC);
192.168.0.2; (secondo PC, ecc.)
192.168.0.3;
192.168.0. ...;
192.168.0.253;
192.168.0.254.
il numero 255 è riservato al servizio broadcast verso tutti i
computer.
Mettendo il terzo byte dell'indirizzo di rete a 1, avremo
un'altra rete da 254 PC:
192.168.1.0 indica l'indirizzo di questa seconda rete
192.168.1.1 (primo PC)
192.168.1.2 (secondo PC. ecc.)
Ecc. come sopra.
192.168.1.255 indica l'indirizzo di broadcast.
Se non ci interessasse una rete da 254 PC, e preferissimo
suddividere ulteriormente quella rete (ad esempio la rete:
192.168.1.x) per avere ad esempio 6 sottoreti da 30 PC, dovremmo
calcolare quale valore immettere nel quarto byte della SubNet
Mask, che attualmente è a zero.
Poiché dobbiamo mettere a "1" i primi tre bit del byte (che
attualmente è a 0), dobbiamo fare: (128 + 64 + 32) = 224,
[in numerazione binaria, 128, 64, 32, 16, 8, 4, 2, 0, sono il
valore che ha ogni singolo bit del byte]
quindi la SubNet Mask sarà: 255.255.255.224
e questi sono gli indirizzi che daremo ai vari computer di ogni
rete:
Prima rete:
indirizzo di rete: |
192.168.1. 32; |
primo PC: |
192.168.1. 33; |
trentesimo PC: |
192.168.1. 62; |
indir. Broadcast: |
192.168.1. 63. |
Seconda rete:
indirizzo di rete: |
192.168.1. 64; |
primo PC: |
192.168.1. 65; |
trentesimo PC: |
192.168.1. 94; |
indir. Broadcast: |
192.168.1. 95. |
Terza rete:
indirizzo di rete: |
192.168.1. 96; |
primo PC: |
192.168.1. 97; |
trentesimo PC: |
192.168.1. 126; |
indir. Broadcast: |
192.168.1. 127. |
Quarta rete:
indirizzo di rete: |
192.168.1. 128; |
primo PC: |
192.168.1. 129; |
trentesimo PC: |
192.168.1. 158; |
indir. Broadcast: |
192.168.1. 159. |
Quinta rete:
indirizzo di rete: |
192.168.1. 160; |
primo PC: |
192.168.1. 161; |
trentesimo PC: |
192.168.1. 190; |
indir. Broadcast: |
192.168.1. 191. |
Sesta rete:
indirizzo di rete: |
192.168.1. 192; |
primo PC: |
192.168.1. 193; |
trentesimo PC: |
192.168.1. 222; |
indir. Broadcast: |
192.168.1. 223. |
SubnetMask:
come funzionano e come si calcolano le sottoreti.
In una rete TCP/IP, se un computer (A) deve inoltrare una
richiesta ad un altro computer (B) attraverso la rete locale, lo
dovrà fare riferendosi ad un indirizzo IP che identificherà
univocamente il computer (B) sulla rete.
Una volta ricevuta la richiesta il computer (B) dovrà
rispondere, e per farlo, si dovrà riferire, a sua volta,
all'indirizzo IP univoco che identifica il computer che ha
proposto la richiesta, estrapolando l'indirizzo dalla richiesta
stessa.
Due o più computer per capire se operano sulla stessa rete TCP/IP
usano la maschera di sottorete (comunemente chiamata Subnet Mask)
per distinguere nell'indirizzo IP l'ID di rete e l'ID dell'host.
La Subnet Mask blocca una parte dell'indirizzo IP in modo che il
TCP/IP possa distinguere l'ID di rete dall'ID dell'host.
Per comprendere meglio come la subnet mask blocchi la parte
dell'indirizzo IP relativo all'ID di rete è necessario
convertire i valori decimali dell'indirizzo IP e della Subnet
Mask in binario.
Si esegue l'operazione descritta sopra per tutte le terzine
dell'indirizzo IP e della subnet mask, si ottiene così il
seguente risultato.
Quindi in binario si ottiene:
Eseguendo l'AND logico BIT per BIT fra l'indirizzo IP e la
Subnet Mask si ottiene la separazione della parte dell'indirizzo
IP che identifica l'ID della rete e dalla parte che identifica
l'ID dell'host.
Quindi:
Come si può notare dalla figura sopra riportata, la parte di
indirizzo IP interessata dai BIT settati ad 1 della Subnet Mask
rimane invariata, mentre i BIT interessati dai BIT settati a 0
assume anch'esso il valore 0. Quindi ne viene fuori che la parte
che rimane inalterata è l'ID della rete, mentre la parte che
assume il valore 0 è la parte destinata all'Host.
Nel caso sopra citato rimangono liberi per gli Host gli ultimi 8
bit dell'indirizzo di IP.
Per calcolare il numero di Host che possono far parte della rete
si esegue un semplice calcolo.
Numero Host = 2N -
2
Dove il primo 2 sta ad indicare il numero di possibili valori
che può assumere il bit (0 o 1), N sta ad indicare il numero di
bit destinati agli Host (8 nel nostro caso). Da questo numero
bisogna sottrarre gli indirizzi estremi della nostra rete, in
quanto non utilizzabili come indirizzi di Host (0 e 255 nel
nostro caso). Vieni fuori quindi che nella rete sopra descritta
possiamo utilizzare per gli Host gli indirizzi IP da 192.168.1.1
a 192.168.1.254.
Esiste un altro modo di indicare Indirizzo IP e Subnet Mask, ed
è il seguente:
Come si nota dalla figura sopra riportata viene indicato oltre
l'Indirizzo IP il numero di bit settati ad 1 della Subnet Mask,
quindi scrivere /24 equivale ad indicare una Subnet Mask uguale
a 11111111.11111111.11111111.00000000 che in decimale equivale a
255.255.255.0.
Per maggiore chiarezza è meglio fare altri esempi di Indirizzi
IP e Subnet Mask.
Supponiamo di avere a disposizione un range di Indirizzi IP
privati che va da 192.168.1.0 a 192.168.1.255 e vogliamo
ottenere 6 sottoreti da 30 host ciascuna. Per far ciò bisogna
allargare la parte di subnet mask della rete di 3 bit, quindi la
subnet mask non sarà più /24, ma /27 uguale a
11111111.11111111.11111111.11100000 che in decimale equivale a
255.255.255.224.
Vediamo in dettaglio perché con questa subnet mask si ottengono
6 reti da 30 host ciascuna.
La formula per calcolare il numero di sottoreti è simile a
quella utilizzata per calcolare il numero di host per rete e
cioè:
Numero di Sottoreti = 2N
- 2
Dove questa volta N è il numero di bit che sono stati aggiunti
alla subnet mask nativa, quindi 23 = 8 - 2 = 6, ecco
ottenuto il numero di sottoreti. Avendo aggiunto 3 bit alla
rete, per gli host rimagono 5 bit, quindi utilizzando la
precedente formula per il calcolo degli host di ogni rete
otteniamo 25 = 32 - 2 = 30 host per rete.