Guida Sub-netting, tecnica del magic number

TheWorm91

Helper
31 Marzo 2022
520
57
259
417
Ultima modifica:
u-storsberg-_MauPmUJJ08-unsplash.jpg


1    Introduzione

In questa guida verrà descritta la tecnica del "magic number" per effettuare il subnetting partendo da un indirizzo ip e una subnet mask di qualsiasi dimensione.
Se non conoscete o non avete chiaro l'argomento subnetting e che cosa sia un indirizzo ip consiglio di leggere questa guida dove viene spiegato come funziona il subnetting nelle modalità VLSM e FLSM.

La tecnica del magic number permette di evitare di fare le operazioni di OR e BITWISE AND rendendo molto più veloce l'individuazione dell'intervallo degli indirizzi ip compresi dato un indirizzo ip di partenza qualsiasi e una subnet mask, con questo procedimento possiamo evitare di trasformare in binario l'indirizzo ip fornito e la maschera di sottorete.

2    Primo esempio


Vediamo un primo esempio pratico per capire il procedimento, partiamo da questo indirizzo e relativa sub-net mask:

192.168.239.128 /27

invece di trasformare 192.168.239.128 e sub-net in binario, osserviamo quest'ultima.
La sub-net in questo caso viene indicata con la notazione " /#bit a 1 " , abbiamo quindi i primi 27 bit settati a 1, quello che ci interessa è sapere quanti sono i bit a zero dell'ottetto incompleto per trovare il magic number.

In questo esempio il magic number si trova sottraendo ai 32 bit totali che compongono la maschera di sotto-rete i 27 settati a 1, otteniamo quindi 5 (32-27=5).

Nota: in questo caso specifico è bastato fare 32-27 poiché l'ottetto incompleto è l'ultimo
Se la maschera fosse stata compresa tra /17 e /23 l'ottetto incompleto sarebbe stato il terzo e avremmo dovuto fare 32 - "bit a 1 della maschera" - 8
Se la maschera fosse stata compresa tra /9 e /15 l'ottetto incompleto sarebbe stato il secondo e avremmo dovuto fare 32 - "bit a 1 della maschera" - 16
Se la maschera fosse stata compresa tra /1 e /7 l'ottetto incompleto sarebbe stato il primo e avremmo dovuto fare 32 - "bit a 1 della maschera" - 24

Nel caso la maschera sia /8 , /16 o /24 il calcolo del magic number non è necessario perché non ci sono ottetti incompleti.

Attenzione perché 5 non è il magic number che cerchiamo ma è l'esponente a cui andrà elevato 2 per ottenerlo, 2⁵= 32.

Nota: si eleva 2 alla quinta perché 2 è il numero di stati che possono assumere i bit (0 oppure 1).


Quindi il nostro magic number in questo caso è 32.

Adesso che abbiamo il magic number passiamo a ricavare l'indirizzo (net id) che identifica la rete:

Come appena scritto la sub-net è /27 che in notazione decimale estesa equivale a:

255.225.225.224
e corrisponde in binario a 1111111.1111111.1111111.11100000.
Vediamo che i primi 3 ottetti sono tutti valorizzati interamente a 1 (come scritto sopra corrispondono a 255 in decimale) tranne l'ultimo che sarà quello su cui dobbiamo focalizzarci (224 = 11100000).

I primi 3 ottetti del net id saranno uguali all'indirizzo fornito all'inizio:

192.168.239.X
Adesso dobbiamo trovare il valore di X, per farlo dobbiamo trovare il multiplo del magic number (in questo caso 32) che più si avvicina al numero indicato senza superarlo

Importante: se l'indirizzo fornito in partenza avesse l'ottetto da calcolare minore del magic number l'ottetto del net id sarà uguale a 0.
Se l'indirizzo di partenza fosse stato 192.168.239.30 /27 il net id sarebbe 192.168.239.0 (e l'ip di broadcast 192.168.239.31)​

vediamo la sequenza dei multipli di 32:

32, 64, 96, 128, 160 ...
in questo caso X è proprio 128 in quanto è multiplo di 32, quindi possiamo scrivere il net id:

192.168.239.128 = net id

per trovare l'indirizzo di broadcast dobbiamo sommare al valore dell'ottetto appena ricavato che identifica il net id il magic number e sottrarre 1:

ottetto che identifica il net id + magic number - 1 = 128 + 32 - 1 = 159

L'indirizzo di broadcast sarà quindi:
192.168.239.159 = broadcast address

Adesso è possibile trovare l'intervallo degli indirizzi validi da assegnare agli host della sotto-rete:

indirizzo per il primo host 192.168.239.129 (net id +1)
indirizzo per l'ultimo host 192.168.239.158 (indirizzo di broadcast -1)

Questa sotto-rete può quindi contenere al massimo 30 host.



3    Secondo esempio


Vediamo un altro esempio con la notazione della sub-net estesa per far capire meglio il procedimento:

come ip di partenza abbiamo 56.191.131.142 con sub-net mask 255.248.0.0

Troviamo il magic number:
Nell'esempio precedente avevamo la sub-net con notazione "/#bit a 1" ed è stato ricavato il magic number elevando 2 al numero di bit rimasti a zero nell'ottetto incompleto, potremmo fare lo stesso anche qui ma per fare più veloce e non dover convertire 248 in binario possiamo ricavare il magic number sottraendo 248 a 255 e sommando 1:

255-248+1 = 8

8 è il nostro magic number!

Facciamo la riprova con il metodo fatto nell'esempio precedente:

248 in binario corrisponde a 11111000 vediamo quindi che nell'ottetto incompleto ci sono 3 bit a zero, se facciamo otteniamo 8.

Ricaviamo il net id:

il primo ottetto rimane identico in quanto il primo ottetto della sub-net equivale a 255, il secondo dobbiamo calcolarlo mentre i restanti successivi saranno sempre tutti a 0


il multiplo di 8 più vicino a 191 (e che non lo supera) è 184 quindi il net id sarà:
56.184.0.0 = net id

Calcoliamo l'ottetto dell'indirizzo di broadcast:
184 + 8 - 1 = 191

Gli ottetti successivi a quello ricavato saranno sempre a 255, quindi l'indirizzo di broadcast è:
56.191.255.255 = broadcast address

L'intervallo valido per gli host della sub-net sarà compreso tra 56.184.0.1 e 56.191.255.254

4    Conclusioni


Questo metodo di calcolo delle reti può sembrare a primo impatto complicato ma facendo molti esercizi i calcoli risulteranno sempre più veloci e addirittura diventerà immediato trovare il magic number al volo senza troppi sforzi anche perché alla fine i numeri nel sub-netting si ripetono sempre.

Infine consiglio questi siti per fare quiz, esercizi e ricontrollare i risultati dei vostri calcoli: