Subnet mask
La subnet mask (o maschera di sottorete), nell'ambito delle reti di telecomunicazioni, indica la metodologia utilizzata per definire l'intervallo di appartenenza di un host all'interno di una sottorete IP, o subnet, al fine di ridurre il traffico di rete e facilitare la ricerca e il raggiungimento di un determinato host con relativo indirizzo IP.
Esercizi net mask
Descrizione
Lo schema di indirizzamento correntemente in uso su Internet, il CIDR (Classless Inter-Domain Routing), consente di indicare una subnet in maniera sintetica, con il primo IP della subnet seguito dalla notazione decimale della subnet mask.
La notazione usata per esprimere indirizzi CIDR è la seguente: a.b.c.d./x, dove x è la subnet mask, il numero di bit (contati partendo dal più significativo a sinistra) che compongono la parte di indirizzo della rete.
L'IP a.b.c.d. è l'indirizzo di rete della subnet, ricavabile ponendo i primi x bit pari a 1 gli altri pari a 0.
I rimanenti bit consentono di calcolare il numero di host della sottorete pari a . Il è dovuto al fatto che il primo e l'ultimo indirizzo di ogni rete non sono assegnabili ad alcun host, in quanto riservati rispettivamente come indirizzo della rete della subnet (usato ad esempio nelle tabelle dei router) e come indirizzo di broadcast (ovvero un indirizzo che comprende indistintamente ogni altro indirizzo all'interno di quella rete: viene usato ad esempio in alcuni protocolli di routing).
Da notare che la 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 relativa 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 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
Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la formula , del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella subnet mask, quindi .
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 subnet /24, 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 subnet /24 (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 seguente subnet /24:
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
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 intervallo 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
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
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 intervallo di 30 indirizzi utili per subnet, in quanto 2(32-27) - 2 = 25 - 2 = 30.
L'indirizzo 192.168.32.97 appartiene all'intervallo tra 192.168.32.96 e 192.168.32.127
L'indirizzo 192.168.32.130 appartiene all'intervallo 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 | Uso tipico |
---|---|---|---|---|
/8 | 24 | 255.0.0.0 | 16777214 = 224 - 2 | Allocazione più grande possibile per 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 | |
/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 | 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
Gli Intervalli 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 | Intervalli 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
240
| 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-238
241-254
| 15 31 47 63 79 95 111 127 143 159 175 191 207 223 239
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-150 153-158 161-166 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
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:
Esempio:
Data la rete 138.81.0.0/25 trovare l'indirizzo della settima sottorete.
Quindi l'indirizzo della settima sottorete sarà: 138.81.3.0.
Mentre La sottorete 6 avrà indirizzo:
Si Moltiplica la parte decimale (0.5) per 256
e l'indirizzo della sesta sottorete è 138.81.2.128
link originale: https://it.wikipedia.org/wiki/Subnet_mask
ricordo che l'operatore AND nell'algebra di Boole definisce questo risultato
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
Fondamenti del calcolo booleano: http://www1.unipa.it/valerio.lacagnina/pub/informatica/dispense06.pdfEsercizi net mask
Commenti
Posta un commento