Cosa fa#
Spiega la matematica dietro il subnetting (calcolo binario, formula host, conversione CIDR/mask) e il funzionamento della routing table. Complemento pratico a ip-addressing-subnetting.
Formula host per subnet#
host utilizzabili = 2^(32 - prefisso) - 2Il -2 esclude sempre l'indirizzo di rete (primo IP) e il broadcast (ultimo IP).
/8 → 2^(32-8) - 2 = 2^24 - 2 = 16.777.214 host
/16 → 2^(32-16) - 2 = 2^16 - 2 = 65.534 host
/24 → 2^(32-24) - 2 = 2^8 - 2 = 254 host
/30 → 2^(32-30) - 2 = 2^2 - 2 = 2 host (link point-to-point)Perche' esattamente -2#
Con un /24 hai 32 - 24 = 8 bit di host. Quei bit possono valere 0 o 1 in tutte le combinazioni possibili: 2^8 = 256 indirizzi totali, da 192.168.0.0 a 192.168.0.255.
Due di questi sono sempre riservati e non assegnabili:
- il primo (tutti i bit host a 0): indirizzo di rete →
192.168.0.0 - l'ultimo (tutti i bit host a 1): broadcast →
192.168.0.255
Quindi: 256 - 2 = 254 host usabili, da 192.168.0.1 a 192.168.0.254.
Il procedimento e' sempre lo stesso: trovi i bit host (32 - prefisso), calcoli 2^n per gli indirizzi totali, sottrai i riservati.
AWS VPC usa la stessa base ma riserva 5 indirizzi per subnet (rete, router, DNS, uso futuro, broadcast). Con un /24 in AWS: 256 - 5 = 251 host usabili.
Calcolo binario degli ottetti#
Un indirizzo IPv4 e' composto da 4 ottetti. Ogni ottetto e' un numero 0-255 rappresentabile con 8 bit.
Posizione: | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Valore: | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |Conversione decimale → binario:
192 = 128 + 64 → 1 1 0 0 0 0 0 0
168 = 128 + 32 + 8 → 1 0 1 0 1 0 0 0
255 = 128+64+32+16+8+4+2+1 → 1 1 1 1 1 1 1 1
0 = → 0 0 0 0 0 0 0 0Da CIDR a subnet mask decimale#
Il prefisso CIDR indica quanti bit sono a 1 (parte rete). I restanti sono a 0 (parte host).
/8 → 11111111.00000000.00000000.00000000 → 255.0.0.0
/16 → 11111111.11111111.00000000.00000000 → 255.255.0.0
/24 → 11111111.11111111.11111111.00000000 → 255.255.255.0
/32 → 11111111.11111111.11111111.11111111 → 255.255.255.255Caso non standard — /20:
/20 → 11111111.11111111.11110000.00000000
Terzo ottetto: 1 1 1 1 0 0 0 0
128+64+32+16 = 240
/20 → 255.255.240.0I valori possibili per il terzo/quarto ottetto di una subnet mask sono sempre uno di questi: 0, 128, 192, 224, 240, 248, 252, 254, 255. Sono le uniche combinazioni possibili con bit contigui a sinistra.
/32 — l'indirizzo singolo#
Il 32 non e' un numero magico — viene direttamente dalla struttura di IPv4:
- 4 ottetti × 8 bit ciascuno = 32 bit totali
La notazione CIDR x.x.x.x/N dice: "quanti di questi 32 bit sono parte di rete". Quindi /32 significa semplicemente: tutti e 32 i bit usati per la rete, zero rimasti per gli host.
/32 → tutti e 32 i bit sono "rete"
0 bit rimasti per gli host
identifica UN SOLO indirizzo specificoIl router usa /32 nella routing table per indicare il proprio IP:
C 192.168.1.0/24 → conosco TUTTA questa rete su Gig0/0
L 192.168.1.1/32 → questo specifico IP e' MIO (Local)Routing table — show ip route (Cisco)#
Il comando show ip route mostra come il router raggiunge ogni rete.
| Codice | Significato | Quando appare |
|---|---|---|
C | Connected | Rete direttamente connessa a una porta |
L | Local | IP specifico assegnato a una porta (/32) |
S | Static | Route configurata manualmente |
O | OSPF | Route appresa tramite OSPF |
R | RIP | Route appresa tramite RIP |
Esempio con due reti:
Router# show ip route
C 10.0.0.0/24 is directly connected, GigabitEthernet0/1
L 10.0.0.1/32 is directly connected, GigabitEthernet0/1
C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
L 192.168.1.1/32 is directly connected, GigabitEthernet0/0Quando arriva un pacchetto per 192.168.1.50:
→ router controlla routing table
→ 192.168.1.50 e' nella rete 192.168.1.0/24
→ manda fuori da Gig0/0 ✓Su Linux l'equivalente e' ip route — stessa logica, sintassi diversa.
Flusso completo — PC verso server attraverso router#
PC (192.168.1.2) vuole raggiungere Server (10.0.0.2)
Step 1 — PC controlla la subnet
"10.0.0.2 non e' in 192.168.1.x"
→ devo passare dal gateway 192.168.1.1
Step 2 — PC non conosce il MAC del gateway
ARP Request (broadcast): "Chi ha 192.168.1.1?"
ARP Reply: "Sono io — MAC del router"
Step 3 — PC manda il pacchetto
MAC dst: MAC del router ← cambia ad ogni hop
IP dst: 10.0.0.2 ← rimane invariato fino a destinazione
Step 4 — Router consulta routing table
"10.0.0.2 e' in 10.0.0.0/24 → esce da Gig0/1"
Step 5 — Router manda al server
MAC dst: MAC del server ← nuovo MAC per questo hop
IP dst: 10.0.0.2 ← invariatoRegola chiave: il MAC cambia ad ogni hop, l'IP rimane sempre uguale.
Tabella riepilogativa subnet mask comuni#
CIDR Subnet mask Host utili Uso tipico
/8 255.0.0.0 16.777.214 Reti grandi (10.x.x.x)
/16 255.255.0.0 65.534 Reti aziendali medie
/24 255.255.255.0 254 Reti locali standard
/25 255.255.255.128 126 Suddivisione di /24
/26 255.255.255.192 62 Segmento piccolo
/30 255.255.255.252 2 Link point-to-point
/32 255.255.255.255 0 Singolo indirizzoRisorse#
- cidr.xyz — visualizzatore interattivo CIDR: inserisci un blocco e vedi range, broadcast, host utili
- subnetcalculator.dev — calcolatore subnet con breakdown binario
Collegato a#
- ip-addressing-subnetting — concetti core (cosa e' un IP, subnet mask, RFC1918)
- arp — come viene risolto il MAC nella stessa subnet (Step 2 del flusso)
- nat-concept — come il gateway traduce tra subnet private e Internet




