IP, subnet e classi
192.168.1.0/24 è la convenzione per indicare una generica sottorete IPv4 in una riga. È fondamentale comprenderla e saperla convertire in binario.
Indirizzo IP
Un indirizzo IPv4 come 192.168.1.10 sembra fatto di quattro numeri, ma per la macchina è un unico numero da 32 bit, diviso in quattro ottetti da 8 bit ciascuno (0–255):
192 168 1 10
11000000.10101000.00000001.00001010Ogni ottetto è un byte: 192 in binario è 11000000, 168 è 10101000, e così via.
La maschera
Un indirizzo IP contiene in realtà due informazioni: quale rete e quale host dentro quella rete. A separarli è la netmask: una sequenza di 1 (parte rete) seguita da 0 (parte host).
IP 11000000.10101000.00000001.00001010 192.168.1.10
Netmask 11111111.11111111.11111111.00000000 255.255.255.0
└────────── rete ────────┘└─ host ─┘In questo esempio i primi 24 bit (i tre ottetti a 1) identificano la rete; gli ultimi 8 (a 0) identificano l'host. Tutti gli indirizzi che condividono gli stessi bit di rete stanno nella stessa sottorete.
Notazione CIDR: /n
Scrivere 255.255.255.0 ogni volta è scomodo. La notazione CIDR (Classless Inter-Domain Routing) la comprime nel numero di bit di rete: /24 significa "i primi 24 bit sono rete". Quindi:
192.168.1.10/24 → netmask 255.255.255.0
10.0.0.0/8 → netmask 255.0.0.0
172.16.0.0/12 → netmask 255.240.0.0Più alto è il prefisso, più piccola è la rete: /24 lascia 8 bit agli host (256 indirizzi), /16 ne lascia 16 (65.536). Ogni bit tolto agli host raddoppia la dimensione della rete.
Perché «classless»? Il problema delle classi
La "C" di CIDR sta per Classless, e per capire cosa nega bisogna sapere cosa c'era prima. Fino ai primi anni '90 gli indirizzi si assegnavano in classi di taglia fissa:
| Classe | Prefisso | Host per rete |
|---|---|---|
| A | /8 | ~16 milioni |
| B | /16 | ~65.000 |
| C | /24 | 254 |
Il problema erano proprio le taglie rigide. Un'organizzazione con 300 dispositivi non entrava in una classe C (254 host), quindi le veniva assegnata un'intera classe B: 65.534 indirizzi, di cui oltre 65.000 sprecati. E due reti contigue non si potevano accorpare, perché la maschera era vincolata all'ottetto.
Il CIDR abolisce le classi: il confine rete/host può cadere a qualsiasi bit (è la Variable Length Subnet Mask, VLSM). Così assegni esattamente ciò che serve: un /23 per ~500 host, un /26 per ~60.
Network e broadcast
Due indirizzi in ogni sottorete sono speciali:
- Network address — tutti i bit host a
0. È il "nome" della rete:192.168.1.0. - Broadcast address — tutti i bit host a
1. Un pacchetto qui va a tutti gli host della rete:192.168.1.255.
Si ottengono meccanicamente dai bit host:
Network 11000000.10101000.00000001.00000000 192.168.1.0
Broadcast 11000000.10101000.00000001.11111111 192.168.1.255Numero di host per rete
Con h bit host, gli indirizzi totali sono 2^h. Ma network e broadcast non sono assegnabili a una macchina, quindi gli host utilizzabili sono 2^h − 2:
| Prefisso | Bit host | Totali | Utilizzabili |
|---|---|---|---|
| /24 | 8 | 256 | 254 |
| /26 | 6 | 64 | 62 |
| /30 | 2 | 4 | 2 |
Due prefissi fanno eccezione: un /31 (RFC 3021) ha solo 2 indirizzi ed entrambi sono usabili, pensato per i link punto-punto, dove non serve il broadcast. Un /32 è un host singolo: lo usi per indicare un indirizzo preciso.
Subnetting: dividere una rete
La flessibilità del CIDR è che puoi spezzare una rete grande in più piccole spostando il confine rete/host. Prendi 192.168.1.0/24 e "prestane" un bit agli host: diventa /25, cioè due sottoreti da 128 indirizzi ciascuna:
192.168.1.0/25 → 192.168.1.0 – 192.168.1.127
192.168.1.128/25 → 192.168.1.128 – 192.168.1.255Ogni bit in più raddoppia il numero di sottoreti e dimezza gli host per sottorete. È così che si assegnano blocchi di indirizzi a reparti, VLAN o ambienti diversi senza sprechi.
Supernetting: aggregare le reti
Due sottoreti contigue che differiscono in un solo bit di rete si descrivono con un unico prefisso più corto:
192.168.0.0/24 ┐
├─ 192.168.0.0/23
192.168.1.0/24 ┘192.168.0.0/24 e 192.168.1.0/24 si distinguono solo per il 24° bit; abbassando il prefisso a /23 ottieni un blocco che le contiene entrambe. Per un router questo significa una sola riga nella tabella di routing invece di due. Questa operazione — route aggregation o supernetting — su scala Internet comprime tabelle di instradamento che altrimenti avrebbero milioni di voci.
IPv6
La stessa identica notazione vale per IPv6, solo su 128 bit invece di 32. Un prefisso come 2001:db8::/32 riserva i primi 32 bit alla rete e lascia gli altri 96 agli host: uno spazio così vasto che il subnetting diventa una questione di organizzazione più che di risparmio. La logica "bit di rete + bit di host" non cambia di una virgola.
Riepilogo
Per apprendere meglio ho preparato un calcolatore CIDR interattivo: digiti un indirizzo, trascini il prefisso e vedi in tempo reale network, broadcast, range di host e la maschera bit per bit.
- Un IPv4 è un numero da 32 bit; la netmask decide quanti sono "rete".
/nin CIDR = i priminbit sono rete, i restanti32 − nsono host.- Network = bit host a zero; broadcast = bit host a uno.
- Host utilizzabili =
2^(32−n) − 2(con /31 e /32 come eccezioni). - Alzare il prefisso divide una rete in sottoreti; abbassarlo aggrega reti contigue e alleggerisce le tabelle di routing.
- Il CIDR ha rimpiazzato le vecchie classi A/B/C proprio per evitarne gli sprechi, e vale allo stesso modo per l'IPv6.