Il subnetting è stato introdotto principalmente per motivi di efficienza. Un indirizzo IPv4 è composto da 32 bit e, inizialmente, i primi 8 indicavano la rete (net id) e i restanti 24 indicavano i dispositivi (host id). Con solo 8 bit ad indicare il net id potevano esserci al massimo 2^8 = 128 reti distinte. Pochissime. Per ovviare a questo problema, negli anni '80 è stata introdotta una suddivisione in classi.
In totale avevamo 2^7+2^14+2^21=2113664 reti distinte: molto meglio rispetto alle precedenti 128, ma comunque poche. In realtà erano anche meno perché alcuni indirizzi servivano a fare multicast (classe D) e altri erano riservati (classe E). Inoltre, ci sono reti in cui 2^24=16777216 host sono pochi (e.g., un rete di telecom) e ci sono reti in cui 2^8=256 host sono troppi (e.g., la tua rete di casa).
Per ovviare a questi problemi, negli anni '90 è stato introdotto il Classless Inter-Domain Routing e il subnetting viene fatto con l'ausilio delle subnet mask. La dimensione delle sottoreti non è più fissata dal protocollo, ma viene costruita su misura dagli amministratori di rete: al posto di dover scegliere tra 8 (classe A), 16 (classe B) o 24 (classe C) bit di net id, puoi prendertene quanti ne vuoi. Ad esempio, se vuoi una sottorete con 20 hosts, prima dovevi prenderti tutto un indirizzo classe C da 256 hosts di cui 236 andranno sprecati, mentre ora puoi configurare il router con una subnet mask /27 (i.e., 27 bit di net id 5 bit di host id) e occupare lo spazio per solo 2^5=32 hosts (in realtà 30, perché il primo è l'indirizzo di rete e l'ultimo serve per fare broadcast).
Andando a intuito direi che ti stai riferendo alla rappresentazione puntata degli indirizzi IPv4, ma gli indirizzi IPv6 usano una notazione completamente diversa quindi non pensare che sia particolarmente importante. In ogni caso, un indirizzo IPv4 è formato da 32 bit ed è tipicamente rappresentato come quattro numeri 0 a 255 separati da un punto
questo perché 00000000 in binario è 0 in base dieci e 1111111 in binario è 255 in base dieci. Lo stesso discorso vale per le subnet masks, che si possono rappresentare sia con la notazione con la barra che con la notazione con puntata
dove /27 vuol dire semplicemente 27 uni seguiti da 32-27=5 zeri e la notazione puntata segue dalla conversione da binario a decimale. Se vuoi calcolare il range degli host per la rete di 172.67.71.183/27 devi semplicemente applicare la maschera
in particolare, /27 vuol dire tieni i primi 27 bit così come sono e metti gli altri tutti a zero per avere il primo indirizzo (net id) e tutti a uno per avere l'ultimo indirizzo (broadcast). In informatichese questa operazione si chiama bitwise and.
Codice:
Classe A: 0 [ 7 bit net id] [24 bit host id]
Classe B: 10 [14 bit net id] [16 bit host id]
Classe C: 110 [21 bit net id] [ 8 bit host id]
Per ovviare a questi problemi, negli anni '90 è stato introdotto il Classless Inter-Domain Routing e il subnetting viene fatto con l'ausilio delle subnet mask. La dimensione delle sottoreti non è più fissata dal protocollo, ma viene costruita su misura dagli amministratori di rete: al posto di dover scegliere tra 8 (classe A), 16 (classe B) o 24 (classe C) bit di net id, puoi prendertene quanti ne vuoi. Ad esempio, se vuoi una sottorete con 20 hosts, prima dovevi prenderti tutto un indirizzo classe C da 256 hosts di cui 236 andranno sprecati, mentre ora puoi configurare il router con una subnet mask /27 (i.e., 27 bit di net id 5 bit di host id) e occupare lo spazio per solo 2^5=32 hosts (in realtà 30, perché il primo è l'indirizzo di rete e l'ultimo serve per fare broadcast).
Se mi fornisci una spiegazione io posso provare a completartela e chiarire i tuoi dubbi, ma con una lista di questo tipo io non so proprio cosa farci. Capisco che vuoi una spiegazione approfondita, ma non ho la pretesa di essere più bravo della gente che ha speso il proprio tempo per scrivere un libro, una pagina di wikipedia o una guida su youtube. Scendiamo a compromessi e prova a fare domande meno ampie.Ciò che ho capito è:
-la somma di 1, 2, 4, 8... è 255. Non so a cosa mi serve quest'informazione.
-le classi, A B e C per categorizzare gli indirizzi IP
-i bit vanno a gruppi da 8.. 8 16 24 32 appunto, e la subnet presenta " \22 " per esempio o piu comunemente 16/24, ma non so cosa significhi ne a cosa serva.
-si va da 0 a 255, e si controlla se è segnato 1 o 0 quel numero, ma non ho capito il senso.
Andando a intuito direi che ti stai riferendo alla rappresentazione puntata degli indirizzi IPv4, ma gli indirizzi IPv6 usano una notazione completamente diversa quindi non pensare che sia particolarmente importante. In ogni caso, un indirizzo IPv4 è formato da 32 bit ed è tipicamente rappresentato come quattro numeri 0 a 255 separati da un punto
Codice:
00000000.00000000.00000000.00000000 => 0.0.0.0
10101100.01000011.01000111.10110111 => 172.67.71.183
11111111.11111111.11111111.11111111 => 255.255.255.255
Codice:
/0 => 00000000.00000000.00000000.00000000 => 0.0.0.0
/27 => 11111111.11111111.11111111.11100000 => 255.255.255.224
/32 => 11111111.11111111.11111111.11111111 => 255.255.255.255
Codice:
10101100.01000011.01000111.10110111 => 172.67.71.183
11111111.11111111.11111111.11100000 => /27
----------------------------------------------------
10101100.01000011.01000111.10100000 => 172.67.71.160 (indirizzo di rete)
10101100.01000011.01000111.10111111 => 172.67.71.191 (indirizzo broadcast)