Subnet mask

 

Nell'architettura delle reti di elaboratori TCP/IP, una subnet mask o maschera di sottorete, è un numero che distingue quale porzione di un indirizzo ip identifica la (sotto)rete e quale l'host. È necessaria ad un dispositivo sorgente che vuole comunicare con un secondo dispositivo destinatario per decidere se spedire direttamente all'indirizzo IP del destinatario o se spedire i pacchetti tramite il router della propria rete locale.

Viene espressa in due modi: in notazione decimale classless, dove l'indirizzo ip di una (sotto)rete è seguito da una barra e un numero (/24 rappresenta la subnet mask, 192.168.0.0/24 la subnet)

 

192.168.0.0/24

 

in notazione decimale puntata, cioè con un indirizzo di 32 bit scritto sotto forma di 4 numeri decimali (8 bit ciascuno) separati da un punto, come se fosse un indirizzo ip

255.255.255.0

 

Dalla prima notazione (spesso nota come "slash notation") si deduce il numero dei bit dell'indirizzo IP che identificano la (sotto)rete, 24, e quanti l'host, 8. Più precisamente, si assume che i primi 24 bit sono uguali per tutti gli IP dei dispositivi logicamente presenti nella stessa rete, mentre gli ultimi 8 bit variano, identificando in maniera univoca ciascun dispositivo.

La seconda notazione è invece quella generalmente usata per configurare l'indirizzo ip di un computer.

La prima notazione ci da più informazioni,poiché oltre a far intendere qual è la subnet mask, ci dice qual è la rete a cui ci stiamo riferendo. Per l'esempio visto la rete è 192.168.0 ; con l'ultima cifra da 8 bit che varierà al variare dell' host (es: 192.168.0.1 ; 192.168.0.2 .....). Quindi ogni host che si collegherà alla rete 192.168.0 avrà un IP del tipo 192.168.0.xxx .

Da notare che entrambe le notazioni sono corrispondenti, e rappresentano la stessa subnet mask: 24 equivale al numero di bit 1 consecutivi presenti nella maschera, dopodiché i rimanenti sono tutti 0; 255.255.255.0 rappresenta un valore binario formato esattamente da ventiquattro bit 1 seguiti da otto bit 0.

 

/24           -> 11111111.11111111.11111111.00000000

255.255.255.0 -> 11111111.11111111.11111111.00000000

 

 

 

 

Dalla subnet mask si deduce facilmente anche il numero massimo di host presenti nella subnet considerata: con n bit per gli host si hanno 2n possibili valori, e in particolare si potranno assegnare 2n-2 indirizzi validi alle macchine(o più in generale alle interfacce di rete) di tale sottorete. Tale "limitazione" è dovuta al fatto che due degli indirizzi di qualsiasi rete (o sottorete) assumono un significato particolare e non sono quindi utilizzabili:

 

l  l'indirizzo con tutti i bit della parte host a 0 identifica la rete stessa;

l  l'indirizzo con tutti i bit della parte host a 1 indica il broadcast (messaggio inviato a tutte le macchine della rete);


Più precisamente:

Per determinare il numero massimo di indirizzi utili in una subnet basta contare il numero n di bit 0 a destra della subnet mask, porre n come esponente di 2, e sottrarre a ciò i due indirizzi riservati (uno indica la sottorete stessa, l'altro è usato per fare broadcast). La formula è dunque: 2n - 2

Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la seguente formula: 2(32-m) - 2, del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella subnet mask, quindi m+n=32

Fino a che ci sono 8 bit per definire l'host ID in una rete di classe C, ci sono sei modi differenti in cui una rete può essere mascherata. Ognuno corrisponde ad una differente subnet personalizzata, quando viene creata cambiando i bit allocati per la subnet ID da 0 a 1

Così come nell'esempio in figura , considerando una rete in classe C ( ex 192.168.45.0 ) Ci sono 8 bit nella host ID di default, che permettono di avere sei differenti opzioni di mascheratura ( non è possibile utilizzare i bit 7 e 8 per definire la subnet ID ). Supponiamo di utilizzare 3 bit per definire la subnet ID e lasciare gli altri 5 per l'host ID.

Per determinare la subnet mask , partiamo dalla subnet di default per una rete in classe C :

 11111111 11111111 11111111 00000000

 

Cambiamo adesso i primi tre 0 che troviamo a partire da destra in 1 , per ottenere la subnet mask personalizzata:

 11111111 11111111 11111111 11100000

 

in formato decimale viene tradotta così 255.255.255.224

 

Precisazioni

L'indirizzo di subnet è l'indirizzo di una intera subnet (192.168.0.0/16).

Qui, per subnet, intendiamo un insieme di macchine tali da appartenere allo stesso dominio di broadcast.

La subnet mask è un numero, che denota quale parte di un indirizzo ip identifica la (sotto)rete e quale l'host

Considerato che stiamo parlando del livello ip, è più appropriato usare il termine router piuttosto che gateway.

Inoltre esistono diverse Classi di indirizzi a seconda delle dimensioni:

1.      Reti di tipo A : hanno il primo bit uguale a 0, utilizzano 7 bit per indicare la rete, e i restanti 24 bit per i nodi.

2.      Reti di tipo B : i primi 2 bit uguali a 10, utilizzano 14 bit per indicare la rete e i restanti 16 bit per i nodi.

3.      Reti di tipo C : i primi 3 bit uguali a 110, utilizzano 21 bit per indicare la rete e i restanti 8 bit per i nodi.

4.      Reti di tipo D : i primi 4 bit uguali a 1110 (destinate a usi speciali).

5.      Reti di tipo E : i primi 5 bit uguali a 11110 (destinate a usi sperimentali).

 

Binario

Decimale

Tipo

Da:

A:

Da:

A:

A

00000001.x.x.x

01111110.x.x.x

1.x.x.x

126.x.x.x

B

10000000.00000000.x.x

10111111.11111111.x.x

128.0.x.x

191.255.x.x

C

11000000.00000000.00000000.x

11011111.11111111.11111111.x

192.0.0.x

223.255.255.x

 

Vi sono alcuni indirizzi che vengono utilizzati per scopi particolari: ad esempio l'indirizzo 127.0.0.1 chiamato indirizzo di loopback che identifica il computer stesso e viene associato il nome simbolico di localhost.

 

 

 

 

Un esempio pratico

Supponiamo che il protocollo IP del nostro computer sia configurato come segue:

indirizzo IP: 149.41.200.97

subnet mask: 255.255.255.0

 

prima di tutto trasformiamo in notazione binaria l' indirizzo IP e la subnet mask:

149.41.200.97 = 10010101.00101001.11001000.01100001

 

255.255.255.0 = 11111111.11111111.11111111.00000000

 

allora il livello IP calcolerà:

 

significato AND: operatore logico

            0 AND 0 = 0

                0 AND 1 = 0

                1 AND 0 = 0

                1 AND 1 = 1

10010101.00101001.11001000.01100001 AND      Indirizzo IP       (149.41.200.97)

11111111.11111111.11111111.00000000 =                      Netmask            (255.255.255.0)

_______________________________________

 

10010101.00101001.11001000.00000000        Indirizzo di rete   (149.41.200.0)

 

 

Continuiamo l'esercizio precedente confrontando i risultati che otterremo da questo secondo esempio:

 

 Indirizzo IP 149.41.200.192

 Netmask      255 .255.255.0

 

trasformiamo in notazione binaria l' indirizzo IP e la subnet mask:

149.41.200.192 = 10010101.00101001.11001000.11000000

 

255.255.255.0 = 11111111.11111111.11111111.00000000

 

 

10010101.00101001.11001000.11000000 AND      Indirizzo IP     (149.41.200.192)

11111111.11111111.11111111.00000000 =                      Netmask           (255.255.255.0)

_______________________________________

10010101.00101001.11001000.00000000        Indirizzo di rete (149.41.200.0)

 

notiamo che gli indirizzi di rete coincidono, quindi i 2 nodi possono comunicare tra loro.