Inizialmente, gli indirizzi IP erano suddivisi in classi per semplificare la gestione della rete. Tuttavia, l'uso di sole classi avrebbe portato a due problemi principali:
Per risolvere questi problemi, è stato introdotto il concetto di Subnet Mask.
Le classi IP erano strutturate come segue:
0.0.0.0 a 127.255.255.255 (identificati dal prefisso 0 nel primo bit)128.0.0.0 a 191.255.255.255 (prefisso 10)192.0.0.0 a 223.255.255.255 (prefisso 110)Il router ha bisogno solo della parte relativa alla rete (Network) di un indirizzo IP per instradare i pacchetti. Per questo motivo, si utilizza la Subnet Mask, che permette di distinguere la porzione di rete da quella di host.
Sebbene per identificare il numero di bit dedicati alla rete potrebbero bastare 5 bit, in realtà si utilizzano 32 bit, ovvero la Subnet Mask.
La subnet mask consente al router di eseguire un AND logico bit a bit tra la subnet mask stessa e l'IP contenuto nel pacchetto, ottenendo così l'IP di rete.
Dopo aver calcolato l'IP di rete, il router verifica la propria tabella di instradamento:
3.2.8.1/12
Indirizzo IP in binario: 00000011.00000010.00001000.00000001
Subnet Mask /12 in binario: 11111111.11110000.00000000.00000000
Operazione AND bit a bit:
00000011.00000010.00001000.00000001
AND 11111111.11110000.00000000.00000000
--------------------------------------
00000011.00000000.00000000.00000000 = 3.0.0.0
Rete ottenuta: 3.0.0.0
Host disponibili: 2^(32-12) - 2 = 1.048.574
3.81.2.64/12
Indirizzo IP in binario: 00000011.01010001.00000010.01000000
Subnet Mask /12 in binario: 11111111.11110000.00000000.00000000
Operazione AND bit a bit:
00000011.01010001.00000010.01000000
AND 11111111.11110000.00000000.00000000
--------------------------------------
00000011.01000000.00000000.00000000 = 3.80.0.0
Rete ottenuta: 3.80.0.0
Host disponibili: 2^(32-12) - 2 = 1.048.574