PROGRAMMIAMO
Internet - Subnet Mask
Subnet Mask

Abbiamo detto che l'indirizzo IP si divide in generale in due parti, una che indica la rete e l'altra che indica il computer e abbiamo inizialmente supposto, come semplice esempio, che l'ultimo byte indicasse l'host e il resto la rete. Per esempio avendo un IP uguale a 192.168.0.10, ciò vorrebbe dire che la rete è 192.168.0.0 e l'host è 192.168.0.10. Questa è in effetti una situazione abbastanza frequente, per lo meno nelle piccole reti LAN domestiche, ma non è certo l'unica.

Ed è a questo punto che interviene la subnet mask (o maschera di rete). Si tratta di un numero binario diviso in 4 gruppi di 8 bit ciascuno, esattamente come l'indirizzo IP. Per esempio:

255.255.255.0

Tale numero deve sempre accompagnare un indirizzo IP e serve appunto per capire quale parte dell'indirizzo indica la rete in generale e quale invece il singolo host. Vediamo come.

La maschera di rete serve per calcolare un'operazione di AND bit a bit con l'indirizzo IP: la parte di indirizzo che viene mascherata corrisponde all'identificativo del computer host, mentre la parte rimanente è l'indirizzo di rete. Per capire meglio il meccanismo traduciamo in numero binario sia l'indirizzo IP del nostro esempio:

192.168.0.10 = 11000000.10101000.00000000.00001010

Si noti che tutti i valori sono espressi da 8 bit, eventualmente aggiungendo degli zero in testa.

Convertendo anche la nostra maschera di rete abbiamo:

255.255.255.0 = 11111111.11111111.11111111.00000000

Notiamo che il numero 255 corrisponde a tutti i bit a 1.

Se adesso calcoliamo l'AND bit a bit fra la maschera di rete e l'indirizzo IP completo otteniamo:

192.168.0.10 AND 255.255.255.0 =
= 11000000.10101000.00000000.00001010 AND 11111111.11111111.11111111.00000000 =
= 11000000.10101000.00000000.00000000 = 192.168.0.0

In pratica dove nella maschera di rete c'è un bit a 1, il corrispondente valore nell'IP viene conservato facendo l'AND; viceversa la parte di subnet mask uguale a zero "maschera" (cioè nasconde, elimina) i corrispondenti bit dell'indirizzo IP. Quello che si ottiene alla fine dell'operazione è l'indirizzo IP di rete, cioè 192.168.0.0 nel nostro esempio.

Il meccanismo può sembrare inutilmente complesso nel nostro caso, poiché avevamo già dedotto in partenza che l'ultimo byte di 192.168.0.10  (e cioè 10) specificasse l'indirizzo dell'host e il resto (192.168.0.0) fosse l'indirizzo di rete. Tuttavia questa deduzione, sebbene corretta in questo caso, non è applicabile in generale e potrebbe condurre a risultati sbagliati. L'unica tecnica sicura è applicare la subnet mask fornita insieme all'indirizzo IP.

Consideriamo a questo proposito un esempio più complesso. Supponiamo che l'IP sia 126.32.69.2  e la subnet mask sia 255.255.254.0. In questo caso non è immediato calcolare il risultato dell'AND:

126.32.69.2  AND 255.255.254.0 = 192.32.???.0

Dobbiamo calcolare l'AND fra 68 e 254 e a tale scopo occorre convertire in binario i due numeri:

(69)10 = (01000101)2

(254)10 = (11111110)2

A questo punto possiamo fare l'AND bit a bit fra i due numeri e scopriamo che:

01000101 AND 11111110 = 01000101 = (68)2

Dunque l'indirizzo di rete che possiamo ricavare dall'IP 126.32.69.2 con maschera di rete 255.255.254.0 è 126.32.68.0! Come si può notare in questo caso non sarebbe stato corretto assumere semplicemente che l'ultimo byte fosse l'indirizzo del computer e il resto fosse l'indirizzo di rete.

Classi di indirizzi IP

L'organismo che gestisce lo spazio di indirizzamento pubblico (indirizzi IP per i router) è l'Internet Assigned Number Authority (IANA). Per organizzare meglio gli indirizzi IP essi sono stati suddivisi in classi nel seguente modo:

Classe MSB Bit riservati alla rete Bit restanti Numero di reti Numero di host per rete Subnet mask
Class A     0     8     24     128 (27)     16,777,216 (224) 255.0.0.0
Class B     10     16     16     16,384 (214)     65,536 (216) 255.255.0.0
Class C     110     24     8     2,097,152 (221)     256 (28) 255.255.255.0
Class D (multicast)     1110  non definito non definito non definito non definito 224.0.0.0
Class E (reserved)     1111  non definito non definito non definito non definito 240.0.0.0

Si noti che ad ogni classe è stata assegnata una subnet mask di default che determina le dimensioni di ciascuna rete.

Questa suddivisione è stata inventata agli albori di Internet, quando ancora si pensava che il numero degli indirizzi IP disponibili non si sarebbe esaurito praticamente mai. Infatti spreca una quantità esagerata di indirizzi!

Per esempio le reti della CLASSE A sono solo 128 (e non 256 poiché il primo bit dell'indirizzo non può mai essere 0) e ciascuna può contenere un numero enorme di host (oltre 16 milioni!). Questi indirizzi sono stati assegnati a grandi organizzazioni o aziende o a reti nazionali (vedi qui per un elenco). Anche in questo modo tuttavia ben difficilmente una rete unica può avere 16 milioni di nodi. In pratica queste grandi reti vengono ulteriormente suddivise in reti più piccole, usando maschere di rete diverse da quella di default, in modo da poter distribuire meglio gli indirizzi. Per esempio dalla rete 10.0.0.0 con maschera 255.0.0.0 può essere ricavata una sottorete 10.1.2.0 (numeri a caso!) con maschera 255.255.255.0, la quale contiene solo 256 possibili host.

Le classi D e E sono state create solo per scopi sperimentali o di sviluppo (in pratica non possono mai essere usate)... altri indirizzi IP sprecati. Infine tutti gli indirizzi di classe A che iniziano con 127 (es. 127.0.0.1) si riferiscono a local host, cioè all'indirizzo IP locale della macchina stessa. In pratica qualunque ping effettuato a un indirizzo che inizia con 127 viene reindirizzato al computer su cui si sta lavorando... oltre 16 milioni di indirizzi sprecati perché assegnati tutti allo stesso nodo di rete!

Nella pratica le classi normalmente usate sono la A, la B e la C. MSB rappresenta il valore dei bit più significativi dell'indirizzo IP (Most Significant Bits). La tabella seguente mostra gli indirizzi iniziale e finale per ognuna delle classi:

Class A
  0.  0.  0.  0 = 00000000.00000000.00000000.00000000
127.255.255.255 = 01111111.11111111.11111111.11111111
                  0nnnnnnn.HHHHHHHH.HHHHHHHH.HHHHHHHH

Class B
128.  0.  0.  0 = 10000000.00000000.00000000.00000000
191.255.255.255 = 10111111.11111111.11111111.11111111
                  10nnnnnn.nnnnnnnn.HHHHHHHH.HHHHHHHH

Class C
192.  0.  0.  0 = 11000000.00000000.00000000.00000000
223.255.255.255 = 11011111.11111111.11111111.11111111
                  110nnnnn.nnnnnnnn.nnnnnnnn.HHHHHHHH

E' stato altresì definito uno spazio di indirizzamento privato che permette ad ogni organizzazione di attribuire degli indirizzi IP ai terminali della sua rete interna senza il rischio di entrare in conflitto con un indirizzo IP pubblico indicato dall'IANA. Questi indirizzi, a cui non si può può corrispondere un server pubblico connesso in Internet, corrispondono ai campi di indirizzi seguenti:

Tutti i terminali di una rete interna, connessi a internet attraverso un router e senza indirizzo IP pubblico devono usare un indirizzo contenuto in uno di questi range. Per le piccole reti domestiche, si usa generalmente il range di indirizzi da 192.168.0.1 a 192.168.0.255

 

Classless Inter-Domain Routing (CIDR)

La notazione basata sulla subnet mask è e resta un modo di rappresentare le reti e le sottoreti di Internet ma è, o comunque dovrebbe andare in disuso. Infatti, dal 1993 è stata introdotta una nuova notazione per l'identificazione delle reti e delle sottoreti, soprattutto nei processi di routing, chiamata, per l'appunto Classless Inter-Domain Routing (CIDR).

Usando la notazione CIDR, l'indirizzo si scrive come un classico indirizzo IPv4, seguito da uno slash (/) e quindi da un numero da 0 a 32, chiamato prefisso di rete. Il prefisso di rete indica il numero di bit iniziali, contandoli da sinistra verso destra, che ogni indirizzo di questa rete condivide con un altro indirizzo della stessa rete.

Per esempio un indirizzo IP che nella notazione basata sulla subnet mask (detta anche classfull) verrebbe indicato con 195.32.69.0 e subnet mask 255.255.255.0, viene indicato nella nuova rappresentazione come 195.32.69.0/24. Ciò significa che tutti gli indirizzi di questa rete hanno in comune i primi 24 bit dell'indirizzo. E questo è immediato ricordando che la netmask 255.255.255.0 significa appunto i primi 24 bit uguali a 1 e quindi tutti gli indirizzi di questa rete hanno i primi 24 bit uguali tra di loro.

Calcolatori di rete online

Se tutti questi calcoli vi sembrano troppo complicati, niente paura: ci sono disponibili sul web molti servizi online di calcolo delle reti e sottoreti. Fra le tante possibilità, segnaliamoIP Subnet Calculator e IP Calculator.

La figura seguente mostra per esempio la schermata di IP Subnet Calculator, nella quale vanno inseriti i parametri della nostra rete per effettuare i calcoli:

Ip Subnet Calculator

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it