Subnet mask

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Maschera di sottorete)

La subnet mask o "maschera di sottorete", nell'ambito delle reti di telecomunicazioni, indica il metodo utilizzato per definire il range di appartenenza di un host all'interno di una sottorete IP al fine di ridurre il traffico di rete e facilitare la ricerca e il raggiungimento di un determinato host con relativo indirizzo IP della stessa.

Descrizione[modifica | modifica sorgente]

Esistono tre tipi di mascherature di un indirizzo IP e sono denominate classi:

  • Classe A 255.0.0.0
  • Classe B 255.255.0.0
  • Classe C 255.255.255.0

la subnet di classe A è caratterizzata dall’avere il primo ottetto compreso tra 0 e 127, un esempio a tal proposito può essere 10.56.32.08; la subnet di classe B ha il primo ottetto tra 128 e 191, ecco un esempio di subnet in tal senso: 172.12.56.10; infine le subnet mask appartenenti alla terza classe (classe C) hanno il primo ottetto tra 192 e 223 ed un uso più comune: 192.168.0.2..

La notazione di Classe è sintetizzabile anche tramite una seconda notazione "slash notation" che è la somma dei bit presenti nella subnet mask e che facilita la notazione ed è calcolabile come segue:

255.0.0.0 = 8+0+0+0 la classe A e può essere indicata con /8; 255.255.0.0 = 8+8+0+0 la classe B e può essere indicata con /16; 255.255.255.0 = 8+8+8+0 la classe C e può essere indicata con /24. 255.255.255.255 = 8+8+8+8 = 32 corrispondente ad 1 bit, la notazione indica un unico host. 255.255.255.254 = 8+8+8+7 = 31 corrisponde a 2 bit ecc. quindi un ip 10.0.0.0/8 indica tutti gli host di una classe A, un gruppo di computer notevole.

Da notare che la classe C con subnet mask: /24 ha il 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'indirizzo con tutti i bit della parte host a 0 identifica la rete stessa;
  • 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

Quando il sistema operativo (più precisamente: il livello IP dello stack TCP/IP) riceve da un programma la richiesta di inviare un pacchetto IP ad un certo indirizzo IP destinatario, per prima cosa calcola l'AND logico fra la subnet mask e il proprio indirizzo IP, e lo confronta con l'AND logico tra la subnet mask e l'indirizzo IP di destinazione. Se il risultato delle operazioni è identico (cioè i bit che identificano l'id di rete, o net ID, sono identici, mentre variano solo i bit dell'id di host) allora invierà il pacchetto nella rete locale indirizzandolo con l'indirizzo di rete locale del PC destinatario (se non conosce tale indirizzo userà il protocollo ARP per trovarlo); se invece il risultato delle operazioni è differente significa che il computer destinatario non appartiene alla rete locale, e il pacchetto verrà trasmesso al gateway della rete locale affinché lo instradi verso la rete remota che contiene il computer destinatario.

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

Consideriamo una rete in classe C (ad esempio 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 sinistra in 1, per ottenere la subnet mask personalizzata:

   11111111 11111111 11111111 11100000

in formato decimale viene tradotta così 255.255.255.224

Funzionamento[modifica | modifica sorgente]

Una volta individuata la sottorete di appartenenza il protocollo IP opererà l'instradamento indiretto tramite la parte Net-Id dell'indirizzo IP per raggiungere quella sottorete, seguito poi dall'instradamento diretto tramite l'Host-Id per raggiungere l'host in quella sottorete tramite i protocolli della sottorete locale.

La maschera di sottorete permette al dispositivo di rete di ricercare il destinatario all'interno di un range ben definito senza dover ricorrere all'uso di un router che funga da gateway con un'altra rete.

Per esempio se si vuole sapere o indicare da quanti host è composta la rete che utilizziamo occorre scrivere in forma decimale 'puntata', cioè con un indirizzo di 32 bit scritto sotto forma di 4 numeri decimali (8 bit ciascuno) separati da un punto.

Precisazioni[modifica | modifica sorgente]

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.

Un esempio pratico[modifica | modifica sorgente]

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

  • indirizzo IP: 192.168.32.97
  • subnet mask: 255.255.255.224

e che richiediamo di connetterci all'indirizzo IP 192.168.32.130

prima di tutto trasformiamo in notazione binaria gli indirizzi IP e la subnet mask:

192.168.032.097 = 11000000.10101000.00100000.01100001
192.168.032.130 = 11000000.10101000.00100000.10000010

255.255.255.224 = 11111111.11111111.11111111.11100000

allora il livello IP calcolerà:

11000000.10101000.00100000.01100001 AND      (192.168.032.097)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000          (192.168.032.096)

Ora ripetiamo l'operazione con l'IP di destinazione:

11000000.10101000.00100000.10000010 AND      (192.168.032.130)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.10000000          (192.168.032.128)

I risultati 192.168.32.96 e 192.168.32.128 indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti.

Notiamo che con una subnet mask 255.255.255.224 è possibile avere un range di 30 indirizzi utili per subnet, in quanto 2(32-27) - 2 = 25 - 2 = 30.

L'indirizzo 192.168.32.97 appartiene al range tra 192.168.32.96 e 192.168.32.127

L'indirizzo 192.168.32.130 appartiene al range tra 192.168.32.128 e 192.168.32.159

Se l'IP destinazione fosse stato 192.168.32.100, i due indirizzi avrebbero indicato macchine appartenenti alla medesima sottorete:

11000000.10101000.00100000.01100100 AND      (192.168.032.100)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000          (192.168.032.096)

ESEMPIO: come trovare la subnet mask della subnet 61.161.16.224/27

27 rappresenta il numero di bit 1 più significativi della subnet mask

32-27 = 5 rappresenta il numero di bit 0 meno significativi della subnet mask

quindi:

11111111.11111111.11111111.11100000  =  255.255.255.224

Si noti che la subnet mask è un numero, mentre la subnet rappresenta un insieme di indirizzi IP. È quindi possibile, e del tutto normale, che subnet differenti (es 192.168.0.0/16, 132.144.0.0/16) abbiano la stessa subnet mask (in questo caso: 255.255.0.0)


La seguente tabella esemplifica i metodi di utilizzo della rappresentazione delle subnet.

notazione CIDR host bits Netmask Host nella sottorete Nome per classe Uso tipico
/8 24 255.0.0.0 16777216 = 224 Class A (see this list) Largest block allocation made by IANA
/9 23 255.128.0.0 8388608 = 223
/10 22 255.192.0.0 4194304 = 222
/11 21 255.224.0.0 2097152 = 221
/12 20 255.240.0.0 1048576 = 220
/13 19 255.248.0.0 524288 = 219
/14 18 255.252.0.0 262144 = 218
/15 17 255.254.0.0 131072 = 217
/16 16 255.255.0.0 65536 = 216 Class B
/17 15 255.255.128.0 32768 = 215 ISP / grandi aziende
/18 14 255.255.192.0 16384 = 214 ISP / grandi aziende
/19 13 255.255.224.0 8192 = 213 ISP / grandi aziende
/20 12 255.255.240.0 4096 = 212 Piccoli ISP / grandi aziende
/21 11 255.255.248.0 2048 = 211 Piccoli ISP / grandi aziende
/22 10 255.255.252.0 1024 = 210
/23 9 255.255.254.0 512 = 29
/24 8 255.255.255.0 256 = 28 Class C

LAN ampia

/25 7 255.255.255.128 128 = 27

LAN ampia

/26 6 255.255.255.192 64 = 26

Piccola LAN

/27 5 255.255.255.224 32 = 25

Piccola LAN

/28 4 255.255.255.240 16 = 24 Piccola LAN
/29 3 255.255.255.248 8 = 2³ La più piccola rete multi-host
/30 2 255.255.255.252 4 = 2² "Glue network" (collegamenti punto-punto)
/31 1 255.255.255.254 2 = 21 Usato raramente, collegamenti punto-punto (RFC 3021)
/32 0 255.255.255.255 1 = 20 route verso un singolo host


   hosts   subn/c  subn/c  subn/b  subn/b  bits hex-mask dec-mask
                   strict          strict
       2     64      62    16384   16382     2  fffffffc 255.255.255.252
       6     32      30     8192    8190     3  fffffff8 255.255.255.248
      14     16      14     4096    4094     4  fffffff0 255.255.255.240
      30      8       6     2048    2046     5  ffffffe0 255.255.255.224
      62      4       2     1024    1022     6  ffffffc0 255.255.255.192
     126      2       0      512     510     7  ffffff80 255.255.255.128
     254                     256     254     8  ffffff00 255.255.255.0
     510                     128     126     9  fffffe00 255.255.254.0
    1022                      64      62    10  fffffc00 255.255.252.0
    2046                      32      30    11  fffff800 255.255.248.0
    4094                      16      14    12  fffff000 255.255.240.0
    8190                       8       6    13  ffffe000 255.255.224.0
   16382                       4       2    14  ffffc000 255.255.192.0
   32766                       2       0    15  ffff8000 255.255.128.0

I range di indirizzi ammissibili per una sottorete sono calcolabili a partire dalla sottorete stessa. Ad esempio, la subnet mask 255.255.255.248 vale:

11111111.11111111.11111111.11111000 (29 bit significativi)

Con questa subnet mask potremo avere indirizzi IP con i primi 29 bit uguali e con gli ultimi 3 bit che vanno da 001 a 110 (essendo 000 e 111 riservati rispettivamente a rete e broadcast), quindi ad esempio partendo da indirizzi con 192.168.1 come primi 3 byte, possiamo avere

11000000.10101000.00000001.00000001    192.168.1.1
11000000.10101000.00000001.00000010    192.168.1.2
...
11000000.10101000.00000001.00000110    192.168.1.6

oppure:

11000000.10101000.00000001.01010001    192.168.1.81
11000000.10101000.00000001.01010010    192.168.1.82
...
11000000.10101000.00000001.01010110    192.168.1.86

e così via fino a:

11000000.10101000.00000001.11111001    192.168.1.249
11000000.10101000.00000001.11111010    192.168.1.250
...
11000000.10101000.00000001.11111110    192.168.1.254

Il tutto si può riassumere in una tabella, per semplicità solo per CIDR da 24 a 29:

CIDR Netmask Indirizzi totali Rete Range indirizzi Broadcast
/24 255.255.255.0 256 0 1-254 255
/25 255.255.255.128 128 0
128
1-126
129-254
127
255
/26 255.255.255.192 64 0
64
128
192
1-62
65-126
129-190
193-254
63
127
191
255
/27 255.255.255.224 32 0
32
64
96
128
160
192
224
1-30
33-62
65-94
97-126
129-158
161-190
193-222
225-254
31
63
95
127
159
191
223
255
/28 255.255.255.240 16 0
16
32
48
64
80
96
112
128
144
160
176
192
208
224
1-14
17-30
33-46
49-62
65-78
81-94
97-110
113-126
129-142
145-158
161-174
177-190
193-206
209-222
225-254
15
31
47
63
79
95
111
127
143
159
175
191
207
223
255
/29 255.255.255.248 8 0
8
16
24
32
40
48
56
64
72
80
88
96
104
112
120
128
136
144
152
160
168
176
184
192
200
208
216
224
232
240
248
1-6
9-14
17-22
25-30
33-38
41-46
49-54
57-62
65-70
73-78
81-86
89-94
97-102
105-110
113-118
121-126
129-134
136-142
145-50
153-158
161-66
169-174
177-182
185-190
193-198
201-206
209-214
217-222
225-230
233-238
241-246
249-254
7
15
23
31
39
47
55
63
71
79
87
95
103
111
119
127
135
143
151
159
167
175
183
191
199
207
215
223
231
239
247
255

Calcolo immediato dell'indirizzo di sottorete[modifica | modifica sorgente]

Data una rete di cui si conoscono i bit che compongono la subnet mask (m) e si vuole conoscere l'indirizzo della n-esima sottorete, si può utilizzare la formula:
f(n)=(n-1) \frac {h}{256}
Dove h è il numero di host calcolati come 2^{(32-m)}

Esempio:
Data la rete 138.81.0.0/25 trovare l'indirizzo della settima sottorete.
f(7)=6 \left(\frac {2^{32-25}}{256} \right)=\frac{6}{2}=3

Quindi l'indirizzo della settima sottorete sarà: 138.81.3.0.

Mentre La sottorete 6 avrà indirizzo:
f(6)=5 \frac {2^7}{256}=\frac{5}{2}=2.5

Si Moltiplica la parte decimale (0.5) per 256

0.5 \times 256=128

e l'indirizzo della sesta sottorete è 138.81.2.128

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

Pubblicazione in italiano: La Subnet mask spiegata a mia figlia

  • RFC 950 Internet Standard Subnetting Procedure