Che cos’è una subnet mask (con esempi pratici)

Argomenti:
Pubblicato il: 09-12-2021 12:21

Per chiunque debba configurare una rete o stia approcciando allo studio di queste tematiche, senza dubbio la subnet mask (in italiano: sottomaschera di rete) è fondamentale per saper configurare una rete di computer o dispositivi IoT. Del resto essa assume un valore importante perchè si sfrutta in modo tendenzialmente meccanico, senza capire davvero a che cosa serva.

Purtroppo la documentazione sul web in merito è spesso e volentieri criptica, difficile da capire e con esempi poco utili o a volte, addirittura fuorvianti o sbagliati. Il meglio che possiamo fare in questa sede è ricapitolare sul tema, fare un recap aggiornato – anche in considerazione che questa strategia di configurazione andrà adeguata anche sugli IP del tipo IPv6 (che per semplicità accenniamo e basta, qui parliamo solo di subnet mask classiche per IPv4).

Prima di entrare nel merito, è bene ricordare che gli indirizzi IP come ad esempio:

222.333.444.555

sono divisi in 4 ottetti, ovvero quattro numeri separati dal punto (nello specifico gli ottetti sono 222, 333, 444 e 555). In genere, almeno secondo la utilizzatissima strategia di routing detta CIDR (Classless-InterDomain Routing), una parte di ottetti, nell’ordine dal primo al quarto (quindi gruppi di 1, 2, 3) identifica il numero di rete, mentre il resto degli stessi serve a identificare la macchina o l’host specifico nella rete. Tale suddivisione per punti aiuta a costruire e mappare gli IP da associare ai dispositivi, e può essere affrontata come un problema complesso in cui, di fatto, le subnet mask risolvono la questione.

A cosa serve la subnet mask

Le maschere di sottorete servono ad identificare l’intervallo di IP della sottorete di cui possiamo servirci, o comunque raggruppano degli IP su una stessa rete. Un esempio classico e facile da capire: un edificio da cablare, in cui la sottorete viene usata per identificare i vari IP dei computer distribuiti nella stessa LAN (Local Access Network, la rete locale). Negli IPv4 parliamo di maschere di sottorete (subnet mask), mentre negli IPv6 parliamo equivalentemente di prefissi (prefix), terminologie diverse che pero’ servono entrambe, nei rispettivi contesti, a identificare un range di IP da poter utilizzare.

La suddivisione della rete di un’organizzazione di varie sottoreti consente agli host di comunicare tra loro e di connettersi a internet, il tutto mediante un unico indirizzo di rete condiviso (“esterno”): si dice a volte in gergo che la rete “esce” su internet con un IP singolo. L’IP corrisponde alle varie utenze e smista automaticamente il traffico da e verso gli host, garantendo un funzionamento efficente secondo diverse politiche.

Le subnet mask e i prefissi, a livello pratico, vengono sfruttate quando un host tenta di comunicare con un altro host, distinguendo i casi:

  • se l’host si trova sulla stessa rete, tenterà di trovare quell’indirizzo sul collegamento locale, ovviamente.
  • se invece l’host si trova su una rete diversa, il pacchetto viene inviato a un apposito gateway che indirizzerà il pacchetto verso l’indirizzo IP corretto.

Andando un po’ più sul pratico, abbiamo i seguenti casi (IPv4). La subnet mask in tal caso sarà tipicamente

255.255.255.0

Se la scomponiamo ci rendiamo conto che è composta da 4 ottetti, ovvero 4 numeri da 8 bit ciascuno. vale anche la pena di osservare che il 255 in decimale sarà 11111111 in binario, per cui l’IP sopra potrà avere un equivalente binario del tipo:

11111111.11111111.11111111.00000000

Ogni cifra binaria avrà esattamente 8 bit, se ci fate caso: il nome “ottetto” in effetti è legato all’esponente 8, ovvero al fatto che 28-1 = 255, che è il valore decimale massimo rappresentabile per ognuno (il -1 a volte poco comprensibile ad alcuni, per inciso, è dovuto al fatto che sottraggo un “posto” per poter rappresentare lo zero). Ricordiamoci quindi meccanicamente di questa associazione: 0 = 00000000 e 255 = 11111111 perchè tornerà utile: a questo punto una subnet mask non è altro se non un numero di 32 bit in tutto (8+8+8+8=32), creato impostando a 11111111 i bit della rete e a 00000000 i bit riservati all’host. In questo modo la sottomaschera fa il proprio dovere di dividere l’IP tra indirizzo riservato alla rete e indirizzi per gli host, senza ambiguità.

Se adesso in questo ambito considerassi l’indirizzo IP

10.10.10.0

con subnet mask

255.255.255.0

vorrebbe dire che la sottorete presenta un intervallo di indirizzi IP che vanno da 10.10.10.0 fino a 10.10.10.255 (ragionamento: solo l’ultima cifra della subnet mask è 0, per cui abbiamo 255 host e quindi il range di IP va da 0 a 255 nella rete principale 10.10.10.).

Per inciso, la lunghezza del prefisso in IPv6, in questo caso, sarebbe l’equivalente della subnet mask usata IPv4: tuttavia, anziché essere scritto in 4 ottetti come in IPv4, viene espresso come un numero intero compreso tra 1 e 128. Ad esempio se scrivessi con uno /64 (64 bit, si intende) alla fine, un IPv6 del genere:

2001:db8:abcd:0012::0/64

starei specificando una sottorete, con un intervallo di indirizzi IP che parte da

2001:db8:abcd:0012:0000:0000:0000:0000

ed arriva fino a

2001:db8:abcd:0012:ffff :ffff:ffff:ffff

I primi quattro segmenti, poi, identificano la rete, mentre gli ultimi quattro l’host della rete (un po’ come dire, usando un paragone familiare, che il primo gruppo codifica una città, mentre il secondo l’indirizzo di una casa).

La logica del subnetting

Per capire di che parliamo, a questo punto, immaginiamo una università che deve connettere 30 laboratori, ognuno dei quali disporrà di un certo numero di computer. Il nostro compito basilare è quello di “etichettare” i dispositivi connessi alla rete, in modo da poterli tracciare e/o verificarne danni o guasti.

Se è vero che potremmo scegliere di numerarli da 1 in poi, questa numerazione sarebbe inadeguata e difficile da mappare in termini di corrispondenza aula / laboratorio, e ci costringerebbe a usare meccanismi poco pratici come tabelle di mapping aula-dispositivo, scomode da usare. Molto meglio, a questo punto, sfruttare una notazione composta, ovvero comporre un numero nel formato:

Aula/Computer

dove in sostanza affianchiamo 2 numeri, il primo per l’aula ed il secondo per il computer, specificando che debbano essere di 2 cifre per entrambi. Quindi se ad esempio scrivo:

1156

farò riferimento al computer 56 dell’aula 11. Il senso del masking in rete in effetti è proprio questo: è come se coprissimo con un “pezzo di carta” il 56, mediante maschera cartacea, al fine di “vedere” subito che siamo nell’aula 11.

Se ora passiamo all’esempio con il nostro network, consideriamo l’IP ipotetico:

10.0.2.1

è chiaro che una parte farà riferimento al network (la rete generale) e il resto al nodo (l’host specifico della sottorete). OK, ma quale? C’è ancora un’ambiguità di fondo nella risposta, per quante sono le possibilità ragionevoli in ballo:

10.0.2.1 -> 10 network, nodo 0.2.1 e successivi

10.0.2.1 -> 10.0 network, nodo 2.1 e successivi

10.0.2.1 -> 10.0.2 network, nodo 1 e successivi

Nelle prime reti IPv4, in effetti, le classi di indirizzi venivano utilizzate per identificare il numero di byte assegnati al componente di rete. Le classi di indirizzi IP servivivano proprio a questo, in cui ad esempio avevamo ottetti di questo tipo:

Classe A    network,nodo,nodo,nodo
Classe B    network,network,nodo,nodo
Classe C    network,network,network,nodo

e la regola era quella di guardare il bit più significativo (quello sulla sinistra), ovvero se era da 0 a 127 era classe A, da 128 a 191 era classe B, da 192 in poi classe C. Tutte le reti moderne, pero’, utilizzano il protocollo di data link basato su ethernet: in tal caso il problema è che troppi nodi sullo stesso cavo provocano un potenziale degrado delle prestazioni – un “sovraffollamento” dell’aula se volessimo utilizzare la metafora di cui sopra. Del resto non è detto che uno debba allocare per forza centinaia di nodi sullo stesso indirizzo di classe A, anche perchè ciò diventa poco pratico da gestire, alla lunga. Ed ecco che finalmente viene in nostro aiuto il subnetting, ovvero piccole sottoreti più frammentate e facili da gestire.

La scelta della subnet mask è di vitale importanza per poter garantire la connettività agli host che sono necessari, e va effettuata accuratamente per evitare che lo spazio di allocazione non sia sufficente al numero di dispositivi che è necessario connettere. Se a questo punto avessi utilizzato la sottomaschera

255.255.0.0

in tal caso avrei 2 byte dedicati al network e 2 byte (8 bit) agli host, aumentando il numero di host a cui è possibile associare un IP univoco. Se per 255.255.255.0 avevamo 255 host distinti al massimo, in caso scegliessimo 255.255.0.0 il numero di host andrebbe da

10.0.0.1

fino a

10.0.255.254

ovvero ben 65,536 host al massimo, dove 65,536 viene calcolato come segue: contiamo il numero di zeri contenuti nella maschera, ovvero gli ultimi due ottetti di 255.255.0.0, poi contiamo quanti bit ci sono (ce ne sono 8+8=16, essendo due ottetti), e poi calcoliamo gli host come

216-2 = 65,536

due indirizzi li saltiamo, il primo e l’ultimo, perchè non utilizzabili. Photo by Thomas Jensen on Unsplash 


Questo articolo contiene 1376 parole – Questo blog esiste da 3.646 giorni.
5/5 (1)

Che te ne pare?

Grazie per aver letto Che cos’è una subnet mask (con esempi pratici) di Salvatore su Trovalost.it
Che cos’è una subnet mask (con esempi pratici) (Guide, Configurazioni hosting domini e reti)

Articoli più letti su questi argomenti:

Seguici su Telegram: @trovalost