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.