Vai al contenuto

Cosa sono le maschere di sottorete o subnet mask? (parte 2)

A causa della storica progettazione del protocollo TCP/IP, il sistema operativo si aspetta ancora di usare il vecchio sistema di indirizzamento con le classi. Se si utilizza un indirizzo di classe C, ad esempio 192.168.1.0, il sistema operativo penserà automaticamente ad un indirizzo /24: cioè con i primi tre byte dedicati all’indirizzo di rete. Ma supponiamo di utilizzare  /26 bit, anzichè 24. Come fare in questo caso a imporre questa decisione al sistema? Specificando una maschera di sottorete. La rete ha sempre avuta una, ma in questo caso, si specifica una maschera diversa da quella predefinita per la classe C.

Per capire come funziona una subnet mask, dobbiamo confrontarci con il sistema binario, perché è quello che i computer riescono a comprendere. In binario, 192.168.1.0 è: 11000000.10101000.00000001.00000000

La maschera di sottorete è semplicemente un valore binario di 32 bit che determina quali bit rappresentano la porzione di rete nell’indirizzo a 32 bit. Il valore zero indicano la parte host dell’indirizzo, mentre il valore uno rappresenta la parte di rete. Quindi, per un indirizzo che utilizza la notazione /26, si desiderano dedicare 26 bit dell’indirizzo IP per indicare la rete e 6 bit per indicare l’indirizzo host; la subnet mask verrà scritta in questo modo: 11111111.11111111.11111111.11000000

Per convertire un indirizzo di classe C (o un qualsiasi indirizzo di altra classe) in un indirizzo CIDR senza classi, si fornisce una subnet mask diversa da quella di default. Il computer utilizza questa maschera di sottorete per “mascherare” la porzione di rete dell’indirizzo, che ricorda vagamente come nei teatri si riservano file di posti riservati ai VIP. Il modo più semplice per capire il mascheramento è quello di contare il numero di bit uno nella subnet mask, che corrisponde alla porzione dedicata all’indirizzo di rete. Il modo più difficile è pensare come il computer e utilizzando l’operatore AND della logica booleana. In breve,  1 + 1 = 1, e 1 + [altro] = 0. Con la logica booleana, uniamo l’indirizzo IP (ad esempio 192.168.1.0) con la maschera di sottorete (ad esempio /26). Il risultato prodotto sarà questo:

11000000.10101000.00000001.00000000 + 
11111111.11111111.11111111.11000000 =
_____________________________________
11000000.10101000.00000001.00000000

Tornando al sistema decimale, l’indirizzo rimane 192.168.1.0, ma siccome abbiamo specificato una subnet mask non standard, cioè /26, il sistema operativo capisce che l’indirizzo è 192.168.1.0/26, e che la gamma degli host è di 64 soli indirizzi invece che 256, poichè vengono riservati non più 8 bit, ma 6.

Bits of Pain

Non c’è bisogno di fare calcoli binari per specificare una subnet mask. Il sistema operativo vi permette di specificare la maschera di sottorete in decimale o in notazione a barra. Ad esempio, la rappresentazione decimale per un indirizzo /16 diventa 255.255.0.0.

E qual è la maschera di sottorete per un indirizzo /22? Beh, prima ci saranno 22 bit uno seguiti dai restanti bit zero, cioè 11111111.11111111.11111100.00000000, che in notazione decimale si scrive 255.255.252.0. Se la conversione da binario a decimale diventa un problema, esistono migliaia di strumenti on line per effettuare le conversioni.

Perché le sottoreti?

Era davvero necessario questo articolo? La risposta è sì , perché la tecnica del subnetting permette di dividere un singolo indirizzo di rete in tante sottoreti. Per esempio, prendiamo un host tipico di una rete, che chiameremo Gandalf. L’host Gandalf controlla l’intestazione IP di ogni pacchetto in uscita per stabilire se la destinazione è “locale” o “non locale”. Se la destinazione è locale, Gandalf consulta la tabella ARP per recuperare l’indirizzo MAC della macchina di destinazione, quindi gli invia il pacchetto. Se la destinazione non è locale, Gandalf inoltra il pacchetto ad un suo amico, il Gateway, che si occupa di tutto il resto, cioè di instradare correttamente il pacchetto. Ma Gandalf come sa se la destinazione è dentro o fuori la rete? E’ abbastanza semplice, perchè i dispositivi locali (interni alla rete) hanno lo stesso indirizzo di sottorete di Gandalf.

Le sottoreti sono utilizzati in Internet. Ma si può decidere di utilizzarle per la propria rete, se si vuoe. I motivi sono tanti, ad esempio per una maggiore sicurezza, divido una singola rete in due o più sottoreti, utilizzando uno o più router per collegare tra di loro le sottoreti. Utilizzando più router, le trasmissioni saranno limitate a ciascuna subnet. È possibile utilizzare le sottoreti per facilitare la risoluzione dei problemi. Tracciare un problema su un segmento di rete è più facile se la rete è stata divisa in due sottoreti, perchè si ha a che fare con meno host.

Ma i motivi potrebbero essere anche solamente strutturali, come ad esempio, le sottoreti creare per ogni reparto aziendale, o di diversi edifici di un campus o di un ospedale. Si può indicare con 192.168.100 tutti gli utenti “mobili”, mentre con 192.168.200 gli utenti collegati da postazioni fisse. In questo modo, gli indirizzi wireless sono immediatamente riconoscibili (poichè iniziano tutti per 192.168.100.xxx), durante delle fasi di controllo sui file di log.

La punta dell’iceberg…

Prima di iniziare ad affettare e sminuzzare le nostre sottoreti, c’è un’altra cosa da dire sul TCP/IP. Anche se ci sono 256 possibili indirizzi con un byte (da 0 a 255), in realtà è possibile utilizzarne 254. Questo perché l’indirizzo 255 è riservato al broadcast e l’indirizzo 0 è riservato all’indirizzo di rete . L’indirizzo di broadcast significa “Invia a tutti gli host su questo segmento di rete”, e quindi non può essere usato per descrivere un singolo host.

Per fare un esempio, supponiamo che in un’azienda hanno deciso di dividere la loro rete di classe C in quattro reti CIDR più piccole. Dividendo i 256 possibili indirizzi in una rete di classe C per 4, ogni sottorete può avere fino a 64 indirizzi. Tuttavia, per i motivi già citati, solo 62 di questi indirizzi possono essere utilizzati per gli host. Invece di utilizzare una maschera di sottorete di classe C 255.255.255.0, o /24, si usa 255.255.255.192, o /26. Sei bit (32 + 16 + 8 + 4 + 2 + 1) sono sufficienti per indirizzare 63 host. Ricapitolando l’azienda dovrà creare una tabella di questo tipo:

Subnet # Indirizzo di rete Indirizzo broadcast Indirizzi host utilizzabili
1 192.168.1.0 192.168.1.63 192.168.1.1 a 62
2 192.168.1.64 192.168.1.127 192.168.1.65 a 126
3 192.168.1.128 192.168.1.191 192.168.1.129 a 190
4 192.168.1.192 192.168.1.255 192.168.1.193 a 254

Le sottoreti non sono mica magia oscura – ma solo un luogo dove gli amministratori si trovano faccia a faccia con l’aritmetica binaria, spesso per la prima volta. Abbiamo appena scalfito la superficie di questo argomento. Ma almeno ora, quando ti capiterà di sentire discorsi sul networking sai di cosa stanno parlando.