Vai al contenuto

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

 arpanet_1980

C’era una volta Internet. Ed era molto piccola, cosi piccola che per l’intera rete si poteva utilizzare un singolo byte per identificare ogni computer collegato ad esso, cioè 255. In realtà Internet era conosciuta con il nome di Arpanet, ed era nato principalmente per comunicazioni militari. 

Nel frattempo, un gruppo di studenti universitari che lavoravano su un progetto a Stanford iniziarono a scrivere un protocollo per sostituire NCP (Network Control Program), il primo protocollo Arpanet. Chiamarono questo protocollo TCP/IP , e la caratteristica principale era quella di utilizzare 4 byte per identificare un computer collegato in rete. In più gli indirizzi vennero formattati in 4 “gruppi” in modo che ogni  gruppo indicasse una classe di appartenenza. Infatti l’idea dei giovani progettisti era che Internet si sarebbe composto da poche di reti molto grandi (di Classe A), un numero maggiore di reti di medie dimensioni (di Classe B) e molte reti più piccole (di Classe C). A conti fatti, c’erano 126 indirizzi di rete di Classe A, 64.000 indirizzi di rete di Classe B e quasi 2 milioni di indirizzi di rete di Classe C.

Ma ciò non poteva funzionare bene, perchè una rete di classe C avrebbe potuto contenere solo 254 singoli indirizzi e relativi dispositivi, un numero molto ristretto per qualsiasi organizzazione di medie dimensioni. All’inizio degli anni ’90, Internet stava già diventando un fenomeno culturale e la America Registry for Internet Number era già a corto di indirizzi di classe B.

Come affrontare il problema

Nello schema degli studenti, alcuni dei quattro byte di un indirizzo IP identificano una rete. Il resto dell’indirizzo individua una particolare macchina, chiamato host, connesso in quella rete. In altre parole, qualsiasi indirizzo IP è composto di l’indirizzo di rete da una parte e l’indirizzo host dall’altra. Si potrebbe paragonare gli indirizzi IP ai numeri di telefono. Ad esempio, se si voleva chiamare la Casa Bianca dal Giappone, si dovrebbe chiamare 001 1 202 456 1414. Il 001 1 rappresenta il codice per chiamare dal Giappone agli Stati Uniti; 202, il prefisso, e 456 1414 il numero di telefono specifico. 001 1 202 corrisponde ad un indirizzo di rete, e 456 1414 a un indirizzo host.

Ma in un indirizzo IP a 32 bit qual è la parte riservata all’indirizzo di rete, e qual è la parte riservata all’indirizzo dell’host? Dipende. Ad esempio, un indirizzo di classe A usa il primo byte per identificare la rete, e i rimanenti tre byte per identificare i singoli host. Così, nell’indirizzo 126.10.11.12, il primo byte “126.” è la rete, e “10.11.12″ è un host sulla rete 126. Per gli indirizzi di classe B, gli indirizzi IP come 128.16.7.4, usa i primi due byte “128.16“, come indirizzo di rete, e gli ultimi due byte “.7.4” come indirizzo dell’host. In un indirizzo di classe C, come 204.176.22.1, la porzione di rete dell’indirizzo occupa tre byte (204.176.22), lasciando solo un singolo byte per la parte host (.1).

Da notare che utilizzando un indirizzo di classe A, si potrebbero indirizzare una serie immensa di host: il byte infatti può rappresentare un qualsiasi valore da 0 a 255 e ciò significa che se si dispone di tre byte disponibili per identificare gli host, è possibile assegnare all’host un indirizzo IP 0.0.1, 0.0.2, 0.0.3, e così via, fino a 255 (almeno in teoria, perchè in pratica, il 255 è riservato per uno scopo speciale). Poi si potrebbe ricominciare con 0.1.1, 0.1.2, e cosi via. Lavorando attraverso tutte le possibili combinazioni, la quantità totale di IP unici e disponibili utilizzando un indirizzo di Classe A è di circa 255 x 255 x 255 – cioè oltre 16 milioni gli indirizzi disponibili! Seguendo la stessa logica, una rete di classe B dispone di due byte a sinistra per indirizzi host, e due byte a destra che ci permettono di indirizzare circa 65.000 host (255 x 255). E ora probabilmente capite perchè un indirizzo di classe C, utilizzando un solo byte per indirizzare singoli host, può gestire solo 254 dispositivi. Il perché non 255 dispositivi, verrà spiegato più avanti.

Dato un indirizzo IP nnn.nnn.nnn.nnn generico (dove “n” è pari a un numero; nnn è un numero compreso tra 0 e 255):

Classe IP di rete IP dell’host Numero di host univoci disponibili
A nnn. nnn.nnn.nnn più di 16.000.000
B nnn.nnn. nnn.nnn più di 65.000
C nnn.nnn.nnn. nnn 254

Ora che avete capito la storia delle classi negli indirizzi IP e come vengono divisi i byte, spieghiamo la slash notation, un modo veloce di esprimere informazioni su una rete. Abbiamo detto che un indirizzo di rete di classe A utilizza un byte (otto bit) per la parte di indirizzo di rete. Per indicare esplicitamente, gli amministratori di rete aggiungono /8 alla fine di un indirizzo IP. Quindi un indirizzo IP scritto in questa maniera 126.10.11.12/8, si riferisce a un indirizzo di classe A. Gli indirizzi di classe B utilizzano due byte o 16 bit, e si aggiunge /16. Per la classe C si aggiunge /24 (tre byte di otto bit). Quello che bisogna capire nella slash notation è che il numero scritto dopo la barra indica quanti bit sono riservati per l’indirizzo di rete.

La perdita delle classi

Eravamo rimasti al punto in cui la ARIN era a corto di indirizzi di rete di classe B. La Internet Engineering Task Force arrivò ad una soluzione. Al posto dell’originale e rigida divisione dell’indirizzo in classi di rete (/8, /16 e /24), fu introdotto il Classless Internet Domain Routing (CIDR), cioè l’indirizzamento senza classe. Grazie a questa soluzione, le classi originali (A, B e C) venivano ignorate. Quindi, se all’interno di un’organizzazione vi era la necessità di indirizzare 1000 dispositivi in rete, l’ARIN anzichè scegliere tra 4 indirizzi di classe C o 1 indirizzo di classe B poteva assegnare singoli bit per descrivere l’indirizzo di rete, non necessariamente 8, 16 o 24. Ad esempio dedicare 22 bit all’indirizzo di rete e i restanti 10 bit agli indirizzi dell’host. In questo modo con 210 era possibile indirizzare esattamente 1024 host in conformità con le richieste dell’organizzazione.

Un altro problema con l’indirizzamento IP era emerso a metà degli anni Ottanta. Alcune organizzazioni volevano più indirizzi di rete, una per ogni rete all’interno della propria organizzazione. Invece di dare le più indirizzi di rete, il documento RFC 950 raccomanda l’uso della tecnica di subnetworking, cioè, utilizzando una parte dell’indirizzo IP per indicare indirizzi di rete interni.

Il problema di utilizzare un CIDR (senza classi) per l’indirizzo di rete e la divisione di una rete in sottoreti (subnet), è che il protocollo TCP/IP fu all’epoca progettato avendo in mente il sistema delle classi rigide raggruppando tutti i possibili indirizzi per classi in questo modo:

da 0.0.0.0 a 127.255.255.255 Classe A, o /8
da 128.0.0.0 a 191.255.255.255 Classe B, o /16
da 192.0.0.0 a 223.255.255.255 Classe C, o /24

Era necessario trovare una soluzione affichè l’indirizzo IP venisse correttamente diviso. La risposta fu quella di usare una maschera di sottorete (Subnet Mask).