www.errorediridondanzaciclicodotcom

  • Home
  • Subnet
  • BACK P.P.

  • SUBNETTING!

    Queste pagine vogliono illustrare la subnet.
    Ci sono decine di spiegazioni in ogni lingua ma quando mi sono avvicinato, personalmente, ho trovato difficoltà nel capire la logica che sta dietro la subnet, a sua volta correlata al motivo per cui esiste la subnet.
    Qui troverete più concetti e meno calcoli, non perché un esempio numerico non sia valido, anzi. Dal mio punto di vista gli esempi numerici sono ottimi ma solo se si sono comprese le basi concettuali, altrimenti sono poco intellegibili.
    Piccola premessa: uso sovente il termine pc, normalmente riferito ad un computer Windows, per descrivere un qualsiasi computer, anche con OS differente, da me sempre preferiti. Il termine giusto sarebbe host perchè si intendono anche soggetti, come una lampada o un frigorifero, connessi alla rete, ma per facilitare la comprensione è meglio pensare al classico computer con la sua presa di rete.

    DEFINIZIONE

    Il significato che ritengo più esplicativo di subnet è “porzione di rete” e il termine subnetting può essere tradotto in spezzettare la rete.

    IL SUBNETTING, NELLA PRATICA

    Pensiamo ad una rete di ordinateurs normale, la classica di un'azienda con più reparti. Avremo i reparti A, B, C e D, ogni reparto su un piano.
    Creare una rete in questa azienda vuol dire collegare i diversi pc tra di loro perché possano comunicare (scambiarsi mail, ad esempio) o utilizzare una stampante di reparto.
    Ora pensate al pc di Mara (A1) che vuole mandare una mail al pc di Sara (A2), anzi pensiamo ad una lettera (quelle vecchie buste di carta….). Ipotizziamo che per recapitare la busta ci sia una persona dedicata. Per un momento consideriamo Mara e Sara come due qualsiasi delle/dei 300 impiegate/i.
    Il "consegnatore" di lettere che legge sulla busta, come destinazione, Sara, andrà alla reception e scorrerà una lista di tutti i 300 nomi dell’azienda per sapere dove diavolo si trova la Sara. Ma se la Mara avesse scritto, oltre al nome, anche A2 vicino al destinatario e A1 vicino al proprio nome di mittente, il "consegnatore" avrebbe potuto scorrere la sola lista di A (es. 75) posta sullo stesso piano, impiegando molto meno tempo e senza dover scendere alla reception.
    Questo è lo scopo del subnetting, far fare meno lavoro (che vuol dire velocizzare) al consegnatore e che nel mio esempio rappresenta il router.

    Il compito del router (nelle case è quell'affare bianco che vi fa connettere ad Internet) è quello di instradare una comunicazione da un pc ad un altro, se su strade differenti. Se i pc sono vicini, nella “stessa casa”, farebbe un lavoro troppo banale (ci pensa benissimo lo switch), se invece sono lontani deve proprio scegliere strade tortuose per raggiungere la destinazione.
    Pensate a migliaia di router e milioni di pc in giro per il mondo (Internet!) e pensate ora alla Mara che vuole mandare una mail a Lara a Cupertino.
    Se il primo router a redistribuire il “pacco” contenente la mail dovesse tenere in memoria tutti i destinatari possibili nel mondo e dovesse controllarli tutti ogni volta, sarebbe una cosa difficile da gestire. Invece grazie al subnetting il numero di nomi di pc da controllare, per il primo router, si riduce tantissimo e la mail arriverebbe a Lara attraverso percorsi sempre più dettagliati.

    Prendiamo ora il nostro indirizzo IP, non quello del singolo pc in casa, ma quello assegnato a tutti i nostri pc dall'ISP (fornitore del servizio Internet, come Telecom o Vodafone) con cui abbiamo il contratto, ad esempio: 10.10.10.11 (in verità non è disponibile su Internet ma per una questione di privacy lo userò!).
    Quando il nostro ISP ha acquistato gli indirizzi IP da rivendere poi ai futuri acquirenti di un contratto per Internet, egli ha acquistato dei blocchi di indirizzi, ad esempio dal 10.10.0.0 al 10.10.255.255 (esagero!).
    I router di tutto il mondo hanno in memoria non i singoli indirizzi degli utenti ma i blocchi comprati dal singolo ISP. Una mail da Pechino a noi viaggerà con i primi due numeri attraverso i router, cioè 10.10.x.x, fino a quando arriverà al router che possiede questi blocchi, quello del nostro ISP, il quale router saprà che all’interno della sua subnet si trova il nostro indirizzo, 10.10.10.11.

    Giusto per accennare a questo aspetto: come fa un router a sapere dove fare arrivare un pacco se all’inizio del viaggio vede solo i primi numeri? La risposta, che non è la sede dove approfondire, sta nella scelta della strada più lunga, quella che scende di più nel dettaglio dell’indirizzo di rete. Un router prenderà sempre il percorso più lungo tra quelli in proprio possesso.

    Per ultimo non dimenticate che il subnetting può essere sia il sistema di partizionamento della rete Internet (indirizzi Internet) che di una rete aziendale o universitaria (indirizzi intranet). Anche a casa nostra possiamo provare il subnetting!

    GLI INDIRIZZI IP

    Il subnetting, come viene applicato oggi, si basa sul sistema con il quale si struttura una rete di pc e si assegna ad ogni pc il suo numero di riferimento nella rete. L’indirizzo “IP” è quello usato ad oggi. Deve il suo nome, Internet Protocol, al fatto che è stato studiato proprio per Internet anche se ora viene usato per tutte le reti, anche private.
    Pensate all’IP come ad un foglio su cui è scritta una regola: il vostro pc deve essere chiamato, all’interno della rete, con quattro numeri separati da un punto. L’ultimo a destra è il nome del vostro pc (Alberto), il numero prima di esso, alla sua sx, è la via in cui si trova il pc, il terzo da dx è la città e l’ultimo la nazione in cui si trova.
    Questo foglio è stato fotocopiato e distribuito a tutti i possessori di pc sulla terra, tutti devono usare lo stesso sistema di numerazione, lo stesso “protocollo”.
    In maniera molto semplicistica e riduttiva ecco spiegato l’IP, l’Internet Protocol.

    In realtà non si tratta di vie e nomi ma di porzioni di una rete di pc viste in misura sempre più aggregata procedendo verso sx.

    Nel disegno sopra vedete la scritta ICANN, è l’ente mondiale che assegna gli indirizzi (o i blocchi) agli utenti di Internet. Sarebbe impensabile che ci fossero più utenti con lo stesso indirizzo IP.
    Nell’esempio che ho voluto mostrare, l’ICANN ha rilasciato un blocco di indirizzi ad un ISP. Ciò non è proprio realistico in quanto l’ISP in questione avrebbe solo 256 indirizzi da rivendere ma ipotizziamo adesso che quello assegnato si uno di altri blocchi. Inoltre l’ICANN, in realtà, si appoggia a sua volta ad enti con aree più ristrette (Europa, singole nazioni,.....) in una struttura ad albero.
    L’ICANN ha trovato libero il blocco 72 che fa parte del blocco 104 e che a sua volta fa parte del blocco 81.
    Quando un utente come noi farà un contratto con l’ISP, questi gli assegnerà un indirizzo finale, nel mio esempio il 132. Se l’IP è statico per tutto il tempo del contratto rimarrà lo stesso. Se l’IP è dinamico, ogni volta che l’ISP dovrà rivedere l’assegnazione degli indirizzi, potrebbe cambiare ed assegnarvi un altro numero al posto del 132.

    Tralascio la spiegazione degli ottetti espressi in binario (ottetto.ottetto.ottetto.ottetto) perché troppo lunga e legata a tutta la matematica relativa, dò quindi per scontata la conoscenza di ciò. Comunque per capire il tutto dovete sapere almeno che un ottetto, 8 numeri uno, in binario equivale al numero 255 (256 numeri partendo da 0). Questo è essenziale per comprendere come funziona la struttura dell’IP.

    Prendiamo un IP qualsiasi di esempio, il

    10.11.12.13

    partendo da destra, il pc 13 è il numero tredici (il quattordicesimo partendo da 0) tra i possibili 256 (in realtà 254 utilizzabili) pc del nostro gruppo (ad esempio un ufficio). Il numero 12 rappresenta il dodicesimo ufficio del piano. Il numero 11 rappresenta l’undicesimo piano e il numero 10 l’edificio della nostra azienda.

    Ora, se questa rete aziendale, rappresentata dal 10.x.x.x, era stata suddivisa ad esempio in tre sottoreti: 10.9.x.x, 10.10.x.x e 10.11.x.x., il numero .11. (10.11) é una delle tre sottoreti ed in essa, che ho paragonato ad un piano, sarebbero possibili in linea teorica 256 uffici con ognuno 256 (254) pc. Sempre in riferimento al mio esempio, il nostro indirizzo IP identificherebbe, con il .12. uno degli uffici e, quindi, con il .13 il nostro pc.

    Tuttavia lo scopo del subnetting non è solo la divisione della rete ma piuttosto la creazione di un sistema che permetta ad un pc su una di queste porzioni di essere raggiunto automaticamente e velocemente dai pc appartenenti alla stessa porzione. Infatti lo scopo del subnetting è la semplificazione delle consegne delle “lettere” ai vari destinatari.

    Un altro scopo è quello di evitare le cosiddette "collisioni", nelle reti locali, come quelle di un'azienda privata.
    Sempre nel banale esempio di prima, senza la suddivisione in sottoreti della nostra azienda, se ci sono due lettere per due destinatari e tutti e due appartengono alla stessa "rete unica", il "consegnatore" dovrebbe sempre controllare al centralino uno degli indirizzi, consegnare prima una lettera e ricontrollare il secondo indirizzo.
    Con la suddivisione in sottoreti, "piani dell'azienda", il "consegnatore" potrebbe sapere che i due indirizzi sono sullo stesso piano e consegnare le buste contemporaneamente e, quindi, più velocemente, senza dover ridiscendere al centralino.

    LA NET E LA SUBNET

    Con il sistema attuale, detto IPV4, basato sui quattro ottetti di cui sopra, abbiamo che ogni ottetto può avere un numero da 0 a 255.

    Una piccola spiegazione del sistema binario:

    Quanto sopra è la base di tutto il sistema binario, il BIT in questo sistema può valere 0 oppure 1.

    Dalla Matematica sappiamo che se un numero può assumere 2 valori differenti, allora possiamo scrivere 2 elevato alla uno, due valori possibili presi una sola volta, per un solo BIT.

    Quando i BIT sono due abbiamo che la possibilità di avere 0 oppure 1 vale per ciascuno dei due BIT. Quindi possiamo avere 0 e 0, 0 e 1, 1 e 0, 1 e 1. Due volte (2 BIT) per due differenti possibilità (0 e 1) equivale a scrivere 2 x 2, cioè 2 alla seconda.

    Andando avanti con il numero di BIT in cui potremmo scrivere in ciascuno 0 oppure 1, arriviamo a quanto sopra, cioè tre BIT. Tre BIT nel sistema binario equivalgono a 8 (2^3) possibili differenti valori di questi te BIT.

    Per ultimo vedete 8 BIT (un ottetto del sistema IPV4) che possono assumere 256 differenti valori (2^8).

    Considerando, quindi, che un ottetto può avere massimo 256 combinazioni degli 8 bit che lo rappresentano e che nell'indirizzo IPV4 ci sono 4 ottetti, otteniamo che un indirizzo IPV4 può avere massimo 2 alla 32ma indirizzi differenti.

    Attenzione, dal punto di vista del Web, l’indirizzo dei nostri pc in casa o in azienda non contano, di 192.168.0.23, ad esempio, nel mondo ce ne potrebbero essere milioni ma nessuno vede l'altro.
    Quello che conta, sul Web, sono gli indirizzi pubblici, che devono essere univoci, ad esempio l’indirizzo che ci assegna il nostro ISP e che permette il collegamento ad Internet di tutti i pc di casa nostra (lo potete vedere facendo uno speedtest).
    Più di quattro miliardi di combinazioni possono sembrare tante ma se pensate che solo il MIT possiede (perché acquistati quando ve li tiravano dietro) 2 alla 24 indirizzi, cioè lo 0.39% di tutto il mondo, i numeri cominciano a stringersi. Pensate solo alle lampade collegate singolarmente ad Internet, migliaia di led in una singola azienda, ciascuno con un proprio indirizzo IP e ciascuno collegato ad Internet “singolarmente” (è assurdo ma non impossibile!).

    Quasi tutti gli indirizzi del sistema IPV4 possono essere assegnati, venduti, anche a blocchi da parte dell'ICANN.
    Per blocco intendo un gruppo di host o, più in grande, un gruppo di gruppi di host.
    Per definire un blocco si usa un sistema chiamato CIDR (si pronuncia sidar), che consiste nello scrivere l’indirizzo IP seguito da uno “slash” e da un numero, per esempio:

    192.11.12.13/24 è uno dei pc del blocco 192.11.12.0/24


    Prima di questo sistema "sidar", si usava un sistema basato su classi.
    Dalla classe A alla classe C (la D e la E sono classi speciali) si sono definite tre classi per identificare ciascuna una rete più o meno grande. La classe A è composta da oltre 4 miliardi di indirizzi, ogni classe A da 16 milioni… e così via.

    La suddivisione in classi non permetteva una certa flessibilità. Era possibile passare solo da una classe all'altra e ciò comportava uno spreco notevole di indirizzi. Se un soggetto possessore di una classe C avesse avuto bisogno di allargarsi, avrebbe potuto solo pensare ad una classe B anche se in realtà necessitava di un migliaio di indirizzi in più.
    Ecco allora entrare in gioco la notazione CIDR, per passare da una classe C ad una di poco superiore bastava spostare lo “slash” a sx.
    Da un blocco, ad esempio, 81.31.160.0/24 con 256 indirizzi si poteva passare a 512 con una notazione tipo 81.31.160.0/23.

    Cosa significa ad esempio lo /16?
    Si tratta del numero di bit che compongono l’indirizzo IPV4 e che sono identificativi della rete o sottorete.
    Per capire meglio rappresento un indirizzo IP in decimale

    137.11.12.13

    e poi lo stesso in binario (i quattro ottetti)

    10001001.00001011.00001100.00001101

    Contando da sx 16 bit, questi rappresentano la parte dell’indirizzo IP comune alla rete.
    Cioè, prendendo due pc, uno con indirizzo 137.11.12.13/16 ed uno con indirizzo 137.11.12.14/16 o 137.11.130.13/16, abbiamo che tutti tre i pc sono sulla stessa rete, possono comunicare direttamente senza essere instradati da un router (in realtà il discorso è più complesso ma per ora questo serve per una comprensione iniziale della rete).

    Vediamo adesso come è strutturata una rete. I quattro ottetti possono essere visti anche come degli insiemi in un insieme.
    Pensiamo al primo ottetto a sx come un gruppo di cerchi (in totale ce ne sono massimo 256). Prendiamone uno (es. il numero 192) e lo dividiamo in 256 cerchi. Prendiamone ancora uno (es. il 208) e lo dividiamo in 256 cerchi più piccoli. Prendiamone uno (es. il 34) e lo dividiamo in 256. Prendiamone per ultimo uno, ad esempio il 15, esso sarà il nostro pc.
    Se, invece di arrivare al singolo pc, ci fermiamo alla seconda suddivisione (192.208.0.0/16), ecco che ora possiamo creare le nostre subnet (dove vediamo 0.0) all'interno della net (la 192.208).
    Prenderemo il cerchio qui sotto indicato dalla freccia come 208 e lo potremo suddividere in parti più o meno grandi. Non avremo più scelto un solo cerchio, il 34, ma un gruppo di cerchi con all’interno di ciascuno di essi 256 (254) possibili host.

    Anche questo disegno sotto dovrebbe chiarire la struttura della rete:

    CREIAMO UNA SUBNET

    Dall'esempio precedente, con una notazione /17, invece di /16, abbiamo che la rete, dopo avere scelto uno dei cerchi del secondo livello (come il 208), viene ora divisa in due gruppi di cerchi o spicchi.
    Perché due?
    Perché la nostra porzione di rete, che rappresentiamo come un cerchio, la dividiamo in due. Se volessimo ridurre ancora questa porzione di rete dovremmo procedere in maniera ricorsiva, ciascuna delle due metà sarà divisa in due, e così via.

    Nel grafico sopra mostro cosa succede quando si divide una porzione di rete.
    In ogni spicchio vedete due cifre: l’intervallo della prima delle subnet create (da 0 a…..) e, sotto questo numero, una frazione che rappresenta la parte rispetto al totale degli spicchi. Ad esempio dove vedete 0-15 1/16, significa che la prima subnet, con i numeri che vanno da 0 a 15 (16 in totale), rappresenta un sedicesimo di questa parte di rete. Avremo quindi 16 subnet in totale.

    Tornando all'ottetto, uno dei quattro su cui stiamo ragionando di subnetting, possiamo vederlo come una unità (un singolo ottetto) oppure composto di 256 parti. Se lo consideriamo spezzettato al massimo, 256 unità, ciò equivale ad avere tutti uno nell'ottetto (2 all'ottava):

    x.x.11111111.x


    che vuol dire appunto 256 parti, il nostro cerchio diviso in 256 spicchi.
    Se invece di avere 256 parti (256 subnet), volessimo aggregare maggiormente questa porzione di rete, potremmo ridurre da dx i numeri di uno, fino ad arrivare ad esempio ad uno solo, che corrisponde ad una sola divisione in due parti del cerchio.

    Ritornando alla notazione CIDR dell'esempio sopra, avremmo così ottenuto questa rete:

    11111111.1111111.1 0000000.00000000


    I diciassette uno qui sopra corrispondono proprio alla notazione /17, quindi il terzo cerchio o terzo ottetto da sx (che è contenuto nel precedente e, a sua volta, contenuto nel primo) è diviso in due, due sottoreti, come l'ultimo cerchio del disegno precedente.
    Ma poiché una porzione di rete (uno degli ottetti) è composta da 256 parti, dividerla in due equivale a dividere in due 256 = 128, quindi una sottorete con indirizzi 0-127 e l’altra con indirizzi 128-255.
    Se l'avessimo divisa in quattro (x.x.11000000.00000000) avremmo avuto quattro parti di 64 host ciascheduno.
    Notare che un 1 nell'ottetto in questione divide in due parti la porzione di rete = 2^1, due uno dividono la rete in quattro parti = 2^2, e così via.
    Attenzione, la suddivisione di una rete in parti più piccole prevede sempre che si aggiungano uno da sx, progressivamente, il che equivale ad applicare il suddetto concetto ricorsivo: divido in due, poi ogni parte la divido in 2……e così via.

    Se invece volessimo creare un numero dispari di sottoreti dovremmo procedere prima alla suddivisione e poi all'aggregazione di due o più reti (supernetting).

    Nela disegno sopra abbiamo una rete suddivisa in 8 parti, cioè con 256/8 = 32 unità per ogni parte. Quindi ogni sottorete composta da 32 indirizzi (dall’inizio: 0-31, 31-63, 64-95, e così via).
    Abbiamo poi però necessità di aggregare due sottoreti. Potete pensare ad un’azienda divisa in 7 reparti ma un reparto con quasi il doppio degli host o dei sottoreparti. Per mantenere la comunicazione diretta tra gli host di questo super reparto, abbiamo prima diviso in 8 sottoreti e poi aggregato 2 sottoreti, ottenendo una supernet (i due spicchi blu del disegno).

    Vediamo ora un altro caso semplice di esempio: divido in due una rete. Partendo da una rete tipo 192.208.100.0/24, creo due sottoreti, quindi diventa 192.208.100.0/25. In questo caso ho creato due sottoreti, quindi se prima tutti i pc erano insieme sulla stessa rete e la numerazione andava da 0 a 256, ora, con due reti avrò:

    Se prendo un host di questa rete, ad esempio il 192.208.100.63, vedrete che essa non può che appartenere alla prima parte (n1).
    Questo per sottolineare che, concettualmente, la divisione in parti di una rete deve essere sempre un multiplo di 2, proprio per il discorso ricorsivo come nell'esempio dei cerchi. Più avanti utilizzerò un sistema per creare sottoreti senza il vincolo del multiplo di 2 ma ora, ciò, serve solo per una visione intuitiva del subnetting.

    LA SUBNET E LA CLASSE

    Anche se sopra ho spiegato che il metodo CIDR, letteralmente senza classe, vuole superare il concetto di classe, in realtà queste rimangono sempre valide.
    Infatti quando è stato messo in piedi il sistema IPV4 con le classi, oltre alla struttura di cui abbiamo detto, sono stati identificati alcuni blocchi di indirizzi con attributi speciali (alcuni non utilizzabili come pubblici) e sono state anche collegate le classi a dei numeri precisi.

    Anche Wikipedia, negli esempi per spiegare il subnetting, prende, in uno di essi, una classe B (che inizia con 138…) e vi applica la notazione CIDR 138.81.0.0/25. Senza sapere che era una classe B, avremmo potuto considerarla una classe C che, non avendo /24 ma /25 nella notazione, era stata divisa in due sottoreti. Invece la notazione di partenza era /16 (classe B perché inizia con 138.x.x.x) ed avendo esteso tale notazione a /25 sono state create 512 sottoreti. Ogni sottorete avrà 128 possibili host (in realtà 126).
    Infatti l’esempio serve a spiegare il calcolo per ottenere l’indirizzo dell’ennesima sottorete.

    Ciò serve anche ad introdurre un altro concetto, essenziale per capire il subnetting: la suddivisione di un rete avviene per livelli, ciascun livello corrispondente ad uno degli ottetti.

    Se prendete un indirizzo come 192.168.0.0/18 è come se prendeste la porzione di rete 192, all'interno di questa la porzione 168 e, all'interno di questa, creaste quattro gruppi.
    Perché 4?
    Ripeto la procedura: nella notazione ho messo /18. I primi due ottetti, 192 e 168 sono fissi e sono costituiti da 16 bit insieme. Quindi 18-16=2, questo risultato è il numero di bit da aggiungere da sx ai 16 bit dei primi due ottetti.

    Così il terzo ottetto sarebbe 11000000 (192 in decimale). In questo ottetto ci sono due 1 (quindi 2^2=4, 4 sottoreti) e 6 zeri (quindi 2^6=64), ogni sottorete avrà 64 possibili "combinazioni".

    Ora, ricordo che siamo al terzo ottetto, questo è il motivo per cui ho scritto "combinazioni", infatti ogni combinazione (es. 192.168.60.x) può avere 256 sotto combinazioni al quarto ottetto, cioè 256 (254) host o pc. Quindi ogni sottorete avrà 64 x 256 = 16.384 indirizzi di singoli host. Lo stesso risultato si ottiene automaticamente contando gli zero presenti nella notazione (o facendo 32-18=14) ed elevando il 2 a questo numero (2^14=16.384).

    Come già esposto, una sottorete è fatta di tanti indirizzi singoli. Se al terzo ottetto abbiamo preso una delle possibili 4 sottoreti e, all'interno di essa, prendiamo un indirizzo IP, otteniamo l'esempio di prima: 192.168.60.x. Se adesso scegliamo un singolo pc, per esempio il 232, otteniamo l'indirizzo 192.168.60.232. Questo singolo pc sarà sulla stessa sottorete non solo di un'ovvio 192.168.60.36 ma anche di un 192.168.33.222. Infatti tutti tre i pc qui numerati appartengono alla stessa PRIMA porzione di rete o subnet.

    Graficamente è più evidente. Nel disegno sopra vedete tutte le 256 combinazioni "teoricamente" possibili del primo ottetto(ellisse arancione).
    Di queste abbiamo preso una, il cerchio verde che corrisponde fittiziamente al 192 (le dimensioni non sono in proporzione al numero di cerchi!).
    Scendendo di livello (secondo ottetto) abbiamo scelto quello con numero 168. Quindi siamo arrivati alla rete 192.168, in cui possiamo avere 65536 host (2^16).
    Ora però non vogliamo tutti questi host a condividere lo stesso ramo, dividiamo la porzione 168 in 4 sottoreti. Il cerchio bianco è stato diviso in quattro ed ogni frazione presenta i rispettivi range di indirizzi.
    Prendiamo, per esempio, la prima frazione, da 0 a 63 ed in particolare l’indirizzo .60. Corrispondente ad uno dei cerchi violetto. Siamo ora a 192.168.60.x, dove al posto della x ci possono essere 256 (254) host. Nel grafico identifico uno di questi pc, cioè uno dei puntini, con il numero 203. Questo pc, nel mio esempio, essendo in una sottorete, potrà comunicare direttamente con tutti gli altri host della stessa sottorete. Potrà comunicare, per esempio, con il 192.168.43.154 ma non con il 192.168.104.56 (che appartiene alla seconda sottorete, secondo spicchio).

    FINALMENTE LA SUBNET MASK!

    Torniamo al motivo (per lo meno uno dei motivi) per il quale si subnetta una rete: dare un metodo al router di sapere se due pc possono comunicare direttamente ed evitargli così il lavoro dell'instradamento.
    Utilizzando solo la notazione x.x.x.x/n un router, confrontando due pc di questa rete, non saprà su quale sottorete ognuno si troverà.
    Ecco allora intervenire la subnet mask. La subnet mask può essere vista come un sistema attraverso il quale un indirizzo di rete può essere verificato a quale subnet appartiene, in maniera semplice e veloce.

    Tutti noi avremo sperimentato la configurazione di rete sui pc senza l’utilizzo del DHCP. Sui normali pc si deve entrare nei settaggi di Internet, scrivere l’indirizzo IP del nostro pc, l’indirizzo del router che centralizza la connessione (in genere che finisce con un .1) e la subnet mask (normalmente 255.255.255.0).

    La subnet mask è un numero che permette di mostrare quanto del nostro indirizzo IP è relativo alle rete a cui appartengono altri pc dello stesso spazio (es. ufficio o singolo ISP) e quanto è relativo alla rete allargata (aziendale o blocco nazionale di fornitori ISP).

    Come sopra accennato, scrivere il numero decimale 255 in binario equivale a scrivere otto uno, cioè .11111111., scrivere 254 equivale a .11111110., ecc. Se la subnet mask è per esempio 255.255.254.0, essa equivale a

    11111111.11111111.11111110.00000000

    che si traduce in 23 uno da sx. Noterete la corrispondenza con la notazione CIDR, in questo esempio sarebbe

    x.x.x.x/23

    L'esempio di notazione CIDR sopra fa subito pensare o ad una classe B (/16) suddivisa in 128 sottoreti di classe C (/16+7= /23) o semplicemente una rete di classe C suddivisa in due subnet (/24-1= /23).

    Ma come si usa la netmask?
    Qui si deve per forza accennare al calcolo binario perché è così che ragiona il nostro router.
    Quella serie di uno permette, con un’operazione binaria chiama AND, di verificare se un pc appartiene alla stessa sottorete di un altro.
    Quando facciamo l'operazione chiamata AND (in realtà è una semplice moltiplicazione), confrontiamo un numero binario con un altro e il risultato del confronto è 1 (1x1=1) se ambedue i numeri hanno 1 nella stessa posizione di bit e 0 (1x0 o 0x1 o 0x0 = 0) negli altri casi.
    Quindi se facciamo, per esempio:

      IP      .11110111.
                        AND
      NETMASK .11111111.
              --------
      RISUL.  .11110111.

    Notare che il confronto di qualsiasi numero di un ottetto con tutti uno, cioè .11111111., significherà riportare il numero stesso (dove nel primo numero c’è un 1 si avrà 1, dove c'è 0 si avrà 0).
    Se la subnet mask è 255.255.254.0 (11111111.1111111.11111110.00000000) e si confronterà (AND) con un numero IP, es 10.11.12.13, avremo:

    per i primi due blocchetti sempre 10.11 perché nella netmask abbiamo tutti 1 in questi ottetti, il terzo ottetto avrà come risultato

      IP      .00001100. = 12
                               AND
      NETMASK .11111110. = 254
              --------
      RISUL.  .00001100. = 12

    ed all’ultimo ottetto tutti 0.

    Confrontando un altro IP con la stessa netmask, es. 10.11.13.15, avremo:

    10.11 rimangono uguali come prima perché ANDati con 255.255, il terzo ottetto

      IP      .00001101. = 13
                               AND
      NETMASK .11111110. = 254
              --------
      RISUL.  .00001100. = 12

    e all'ultimo ancora zeri.

    Dal confronto tra i due risultati vediamo che i due indirizzi del confronto sono uguali (10.11.00001100.00000000) quindi i due pc sono sulla stessa rete.
    Essere sulla stessa rete o sottorete vuol dire poter comunicare direttamente. In caso contrario si deve ricorrere ad un router. È come se una casa sulla stessa strada di un'altra potesse parlare direttamente, in caso contrario si deve ricorrere ad un ripetitore che porta i messaggi all'altra strada.

    Il router (compresi quelli megagalattici degli IXP come nella foto sopra) fanno proprio così, controllano con la netmask la porzione di rete dell'indirizzo mittente ed il risultato lo controllano con quello ottenuto dal confronto della netmask e l'IP del destinatario. Se i risultati sono uguali si dice che "scartano" il percorso, cioè non è compito loro ma lo riversano sugli switch o sulle dirette interfacce. Se sono differenti si rimboccano le maniche ed iniziano il duro lavoro di instradare i pacchetti.

    Noterete che la netmask è composta di uno e zeri, la loro posizione permette di osservare come è strutturata una rete. Infatti la subnet mask è divisa in due parti: la prima a sx, con tutti 1, è relativa al lato network, la seconda, al suo lato, con gli 0, è invece relativa al lato host.

    Nel primo esempio sopra abbiamo la situazione più semplice, la netmask relativa ad una classe B con una netta separazione tra i primi due ottetti ed i secondi due. Il lato network, con tutti uno nella netmask, tramite l’ANDing, riporterà sempre gli stessi numeri di ogni indirizzo IP con cui si farà il match.
    Il lato host invece, con tutti zero, restituirà come risultato dell’ANDing sempre zero, quindi tutti gli indirizzi IP confrontati con questa netmask sostituiranno i valori di ottetto con zero. Tradotto significa che tutti i pc con questa netmask si trovano sulla stessa rete (xxx.xxx.000.000) identificata dai primi due ottetti.

    Nel secondo esempio abbiamo allargato la rete di classe B e, quindi, ristretto il numero di host disponibili per ogni sottorete. Una rete tipo 137.168.xxx.xxx viene divisa ed otteniamo più sottoreti. Una di queste, ad esempio, ha indirizzo 137.168.063.xxx. Questo IP equivale, in binario, a 11000000.10101000.00111111.xxx ed abbiamo, come mostrato dal II disegno sopra, una netmask 255.255.192.0 equivalente a 11111111.11111111.11000000.00000000.

    In questa netmask notiamo che i primi 18 bit sono relativi al lato network e gli altri 14 bit al lato host. Tutti gli indirizzi che avranno i primi 18 bit uguali tra di loro saranno su una delle sottoreti (in questo caso 4) di una rete di classe B.

    Attenzione, concentriamoci sul terzo ottetto: nell’indirizzo IP abbiamo .00111111. che corrisponde appunto a 063, nella netmask .11000000. Quando faremo l’AND di questi due ottetti otterremo .00000000.
    Perché abbiamo ancora tutti zero? Non si era detto di avere allargato la classe B?
    E difatti è così, la classe B allargata con i due 1 aggiunti alla 17ma e 18ma posizione della netmask hanno creato 4 sottoreti. Quando abbiamo fatto l’ANDing della netmask con il nostro indirizzo IP abbiamo semplicemente identificato una (la prima delle 4) sottorete che è proprio quella che ha .00xxxxxx. come numero al terzo ottetto.

    Il terzo esempio serve a mostrare un caso particolare ma possibile. Vedete che c’è uno zero tra due uno. È il caso di una netmask 255.255.253.0, che scritta in binario sarebbe proprio 11111111.11111111.11111101.00000000. Il concetto non cambia, contando gli uno abbiamo 23 di questi che identificano la rete e 9 zeri i singoli host.
    Riprendendo il caso di prima, 192.168, avremmo ora una rete di classe B divisa in 128 (2^7 il numero di bit a 1 del terzo ottetto) sottoreti, ciascuna con 512 indirizzi differenti (2^9, i 9 zeri).
    Cosa cambia rispetto, per esempio, ad una notazione 192.168.0.0/23 - 255.255.254.0?
    Cambia il tipo di raggruppamento delle reti. Con .253. abbiamo sempre 128 sottoreti ma saranno raggruppate a due, pari con pari e dispari con dispari. Con il valore .254. abbiamo ancora 128 sottoreti ma il raggruppamento sarà a due sequenziale (prime due, seconde due, ecc).

    COME FUNZIONA LA NETMASK

    Quando abbiamo un indirizzo CIDR come 138.100.0.0/19 vuol dire che una rete di classe B, 138.100 è stata divisa in 8 sottoreti (19-16=3, 2^3=8). Quindi la netmask è 255.255.224.0 = 1111111.1111111.11100000.00000000.
    Avendo 255.255 nei primi due ottetti vuol dire che per questi abbiamo scelto due esatti numeri che sono il 138 ed il 100. Nel terzo ottetto abbiamo messo 0 nella notazione CIDR e 224 (o tre uno e 5 zeri) nella netmask.
    Con ciò abbiamo identificato un'azione di subnetting. Questo si traduce in un preciso significato dei tre 1 presenti nella netmask.

    Se avessimo avuto anche nel terzo ottetto .255. e nella notazione CIDR 192.100.0.0/24 il discorso sarebbe totalmente differente.
    Quello 0 alla terza posizione da sx identificherebbe un preciso ottetto dell’indirizzo IP, lo 0 sarebbe il numero di quella porzione di rete, come 208 o 154, ecc. Invece avendo 138 iniziale e /19, che equivale a .224. nella netmask, lo 0 nella notazione CIDR identifica un'azione di subnetting.

    Vediamo come interpretare questi tre 1. Abbiamo detto che 3 uno equivale a splittare una rete in 2^3 = 8 parti. Quindi, essendoci 256 possibili valori per questo ottetto, abbiamo che 256 diviso 8 (parti) = 32 indirizzi per ogni subnet:
    Ecco il terzo ottetto delle 8 subnet espresso in range di indirizzi:

    0…31
    32…63
    64…95
    96…127
    128…159
    160…191
    192…223
    224…255


    Per due host, essere sulla stessa subnet vuol dire appartenere al medesimo gruppo tra quelli sopra. Facciamo degli esempi:

    138.100.20.252 e 138.100.30.34 ambedue con netmask 255.255.224.0

    ANDiamo il primo con la subnet mask:

      138.100.00010100.11111100
      255.255.11100000.00000000
      -------------------------
      138.100.00000000.00000000

    e il secondo

      138.100.00011101.00010010
      255.255.11100000.00000000
      -------------------------
      138.100.00000000.00000000

    I risultati sono uguali, i due host si trovano sulla stessa subnet.

    Ora proviamo altri due indirizzi:

    138.100.20.252 e 138.100.90.34 ambedue con netmask 255.255.224.0

    ANDiamo il primo:

      138.100.00010100.11111100
      255.255.11100000.00000000
      -------------------------
      138.100.00000000.00000000

    e il secondo

      138.100.01011010.00010010
      255.255.11100000.00000000
      -------------------------
      138.100.01000000.00000000

    I risultati sono diversi, i due host sono in rami differenti, il router deve fare il suo lavoro.

    Cosa significa il fatto che il secondo risultato dell'ANDing, al terzo ottetto, sia .0100000.?
    Il significato sta proprio nei tre 1 della netmask: per ogni 1 del gruppo che identifica la subnet, il corrispondente bit dell’indirizzo IP può valere 0 o 1.
    Queste le 8 possibilità che il terzo ottetto dell'indirizzo IP può assumere (ciascuno equivalente a una delle 8 reti):

    000 = 0
    001 = 1
    010 = 2
    011 = 3
    100 = 4
    101 = 5
    110 = 6
    111 = 7


    Nel primo confronto (AND) avevamo .20. e .30. che equivalgono a .00010100. e .00011101.
    Vediamo in ambedue gli ottetti che i primi 3 bit di questi ottetti sono a 0, ciò corrisponde alla prima sottorete sopra elencata (0...31).

    Nel secondo confronto avevamo .20. e .90. che equivalgono rispettivamente a .00010100. e .01011010.
    Quindi abbiamo che i primi 3 bit dell’ottetto del primo IP sono ancora a 0 mentre i primi 3 bit del secondo IP sono 010, equivalente al secondo blocco di sottoreti di cui sopra, con indirizzi per questo gruppo che vanno da 64 a 95. Infatti il valore del terzo ottetto da sx dell'indirizzo IP, uguale a .90. è compreso proprio in questo range.

    Quanto sopra dovrebbe chiarire il significato dei bit a 1 nel blocco della netmask che presenta sia 1 che 0 (.11100000.): mediante la possibilità di assumere valore o 1 o 0, riusciamo a creare l'insieme di combinazioni (subnet) che può assumere questa rete.

    CREIAMO SUBNET DIFFERENTI

    Sempre grazie alla subnet mask possiamo dividere una rete in più reti differenti in termini di dimensioni.

    Faccio un esempio concreto di una grossa azienda che possiede un indirizzo IP tipo xxx.xxx.0.0/16 che equivale a 256 indirizzi IP pubblici, cioè può avere circa 65000 host accessibili direttamente e singolarmente dall’esterno.

    È come se, qualora volessimo accedere ad una delle nostre telecamere, invece di mettere nel browser l’indirizzo IP assegnato dal nostro ISP e la porta, mettessimo solo un indirizzo IP che è differente da quello di un’altra telecamera!

    Quindi la nostra azienda avrebbe acquistato, ad esempio, questo blocco di indirizzi: 202.34.0.0/16 ed assegnati tutti ad un reparto, il reparto A.

    Successivamente nasce l’esigenza per altri due reparti, di dimensioni differenti, avere accesso diretto ad Internet. Si devono quindi suddividere gli oltre 65000 indirizzi in più gruppi in modo che un accesso via Internet a quest’azienda avvenga con minor lavoro possibile per il router centrale.
    Ad esempio, il router centrale riceverà un pacchetto destinato ad un pc di un reparto dell’azienda e, anziché avere in memoria 65000 indirizzi e doverli controllare tutti, capirà dalla subnet mask a quale reparto appartiene questo indirizzo e inoltrerà il pacchetto al router di questo reparto.
    Questo router avrà in memoria una tabella non di 65000 indirizzi ma molti meno (gli host del singolo reparto) e il check per trovare l’interfaccia relativa sarà molto più veloce. Quando si fanno esempi come quello sopra sembrano sempre esagerati, cosa vuoi che sia una tabella di 65000 o 650 indirizzi per i moderni router? Bisogna però pensare a operazioni come quella dell’esempio che devono durare frazioni del secondo!
    Pensate alla richiesta di un file di 1GB al server on the cloud e pensate ai singoli pacchetti in cui verrà spezzettato questo file, quante operazioni al secondo dovrà fare il nostro povero router?


    Allora partiamo dalla situazione iniziale, abbiamo il reparto A che, occupando tutta la rete, aveva questa notazione tutta per sé:

    202.34.0.0/16 netmask 255.255.0.0 (1111111.11111111.00000000.00000000)

    Ogni host del reparto A finiva sulla rete 202.34.x.x. Per esempio, l’indirizzo 202.34.67.32 e quello 202.34.192.24 avranno come risultato dell’ANDing, con la subnet mask 255.255.0.0, l’indirizzo di rete con il numero: 202.34.0.0.

    Adesso prendiamo questa rete 202.34.0.0/16 e la cambiamo, facendo il subnetting della stessa, aggiungendo cioè un 1 alla netmask e cambiando la notazione CIDR in 202.34.0.0/17. Questa notazione rimane ancora valida per il reparto A, che era quello originale e che aveva più host. La subnet mask di tutti i pc di questo reparto sarà

    255.255.128.0 (1111111.11111111.10000000.00000000)

    Come vedete nella subnet mask ci sono 17 uno che ci permettono di creare due subnet, ciascheduna di 65536/2 = 32768 host.

    A questo punto arriva un concetto basilare per comprendere il subnetting.
    Abbiamo il reparto A che è ora una delle due sottoreti che abbiamo creato.
    Mettendo la notazione CIDR

    202.34.0.0/17 = 11111111.11111111.10000000.00000000


    abbiamo detto che la rete che inizia con 202.34 la splittiamo in due, quindi avremo due blocchi:

    202.34.0.x - 202.34.127.x

    202.34.128.x - 202.34.255.x


    Tenete conto che il terzo ottetto da sx del primo dei due blocchi di indirizzi sopra andrà da 00000000 (x.x.0.x) a 01111111 (x.x.127.x), notate lo 0 iniziale.

    Il reparto B è più piccolo dell'A. Invece di avere 32.768 indirizzi per gli host (2^15, i 15 zeri della parte host), potrà avere 16384 indirizzi (2^14).
    Quindi per il reparto B avremo:

    202.34.0.0/18 255.255.192.0 (11111111.11111111.11000000.00000000)

    Per il reparto B abbiamo che la notazione CIDR sarà:

    202.34.0.0/18 = 11111111.11111111.11000000.00000000.

    Come spiegato sopra, avere due 1 al terzo blocco equivale a splittare la rete in 4 (2^2) subnet:

      0…63
      64…127
      128…191
      192…255


    Infine per il reparto C, ancora più piccolo, la notazione CIDR sarà:

    202.34.0.0/19 = 11111111.11111111.11100000.00000000.


    Come già prima rappresentato, avere tre 1 al terzo blocco equivale a splittare la rete in 8 (2^3) subnet:

      0…31
      32…63
      64…95
      96…127
      128…159
      160…191
      192…223
      224…255


    Qui sopra vedete il valore decimale che il terzo ottetto da sx può assumere, sotto invece il corrispondente valore in binario dei primi 3 bit:

      000 = 0
      001 = 1
      010 = 2
      011 = 3
      100 = 4
      101 = 5
      110 = 6
      111 = 7


    Torniamo ora al reparto A dove avevamo specificato la notazione CIDR che era

    202.34.0.0/17 255.255.128.0

    Questa notazione NON identifica la subnet del reparto A ma specifica la suddivisione in due subnet della nostra rete.
    Come prima sottolineato, avendo diviso in due blocchi la rete, ho creato due sottoreti, la prima con tutti gli indirizzi che hanno al terzo ottetto uno 0 iniziale (quindi da 0 a 127) e la seconda con un 1 iniziale (tutti gli indirizzi da 128 a 255).
    Prendiamo ora la prima, quindi quella che ha tutti gli indirizzi che avranno al terzo ottetto uno 0 iniziale: .00000000.

    Passiamo ora al reparto B, abbiamo detto che è una delle 4 sottoreti che abbiamo creato e la notazione CIDR sarebbe:

    202.34.0.0/18 255.255.192 (11111111.111111111.11000000.00000000)


    Per identificare una delle 4 sottoreti dobbiamo prendere una delle combinazioni del terzo ottetto, quindi se prendessimo, ad esempio, la terza sottorete, quella che avrà al terzo ottetto

    .01000000.

    avremmo in realtà che questa sottorete è compresa nel reparto A e non otterremmo il risultato desiderato.
    Infatti il valore 01000000 equivale a 64 che è appunto incluso nel range 0-127 della sottorete A.
    Quindi dobbiamo prendere uno di quattro "spicchi" che non sono inclusi in quella delle due metà che identifica la subnet A. Ciò equivale a dire che dovremo scegliere una combinazione al terzo ottetto che abbia sicuramente un 1 iniziale, cioè:

    202.34.1xxxxxxx.xxxxxxx.

    Il disegno sotto aiuta a comprendere la questione.

    Vedete che la netmask (la prima in alto) che permette di dividere in due una sottorete ha 17 uno per identificare la parte di rete e 15 0 per la parte host.
    I primi due ottetti sono già fissati (202.34) ed infatti la netmask riporta tutti uno. Il terzo ottetto presenta un 1 iniziale.
    Questo uno è quello che separa tutti gli indirizzi in due blocchi.
    Un indirizzo IP come 202.34.63.122, cioè 11001010.00100010.00111111.01111010 messo in AND con la netmask che abbiamo detto riproporrà i primi 17 bit tal quali ed i restanti 15 bit a 0.
    Ma avere uno zero iniziale al terzo ottetto vuol dire prendere tutti i numeri da zero a 127. Tutti i numeri successivi a 127 (128, 129, .....255) avranno un 1 iniziale, quindi fare l’AND di tutto questo blocco di indirizzi con la stessa netmask vorrà dire avere sempre un 1 iniziale al terzo ottetto. Così abbiamo diviso in due blocchi la nostra rete ed assegnato al reparto A la prima sottorete.

    La seconda parte del disegno mostra come assegnare una classe di indirizzi al reparto B. Questo reparto deve avere massimo 16384 indirizzi cioè si chiede di suddividere la rete in 4 parti in modo che ogni parte (reparto B) abbia questo numero di possibili host.
    Per dividere la rete in 4 parti invece di due, mettiamo un secondo uno al terzo ottetto in modo da avere una notazione tipo 202.34.0.0/18 equiv. a

    255.255.11000000.00000000.

    Vedete che la seconda barra mostra una prima metà in colore rosso che sarebbe la sottorete A e la seconda metà divisa in due. I numeri scritti dentro sono il terzo ottetto.
    Adesso siamo nella seconda metà, non quella assegnata ad A e con lo 0 iniziale, ma la parte di numeri con l'uno iniziale (da 128 a 255).
    Sono due caselle perchè rappresentano, ciascuna, un quarto della rete (una delle quattro sottoreti create ora per il reparto B). Ancora una volta prendiamo il primo blocco perchè nel secondo andremo a creare una sottorete più piccola (C). Prendiamo quindi quegli indirizzi che hanno 1 al primo bit ma 0 al secondo e che rappresentano i numeri (sempre del terzo ottetto) che vanno da 128 a 191 (casella arancione).

    Nello stesso disegno sopra, nelle due successive tabelle, vedete come si comportano degli indirizzi a campione (solo la parte del terzo ottetto!) messi in AND con la terza parte della netmask appena modificata (due uno).
    Ogni tabella (sono due perchè sono due esempi) evidenzia, nelle caselle arancione, i due blocchi di subnet creati che insieme costituiscono il reparto B.

    Rimane per ultima la definizione della terza subnet per il reparto C, la più piccola, con solo 8192 indirizzi possibili. Per avere questo numero di indirizzi dobbiamo avere 13 zeri dal lato host, cioè 19 uno dal lato rete, quindi netmask:

    1111111.11111111.111 00000.00000000


    Avendo aggiunto un 1 alla netmask riusciamo ora a dividere la rete in otto parti (2^3=8). Le prime quattro, insieme, sono state assegnate al reparto A (numeri che vanno da 0 a 127).

    Come mostrato dal disegno sopra, tolto la subnet A (con i quattro blocchi tutti con lo 0 iniziale) rimangono 4 ottavi, cioè una metà libera. Di questa seconda metà abbiamo già preso un quarto (metà della metà) ed assegnato al reparto B (blocchi con 10 iniziale). Abbiamo alla fine un quarto libero (blocchi con 11 iniziale) per assegnarne una parte (1/8 = 8192 indirizzi) al reparto C.

    Nel disegno sotto si vede bene la suddivisione della nostra rete:

    Ricordo che due ulteriori parti (2 ottavi) erano state assegnate al reparto B, numeri che vanno da 128 a 191, in binario da 10000000 a 10111111. Nel disegno sopra, sono le caselle arancione e celeste, sulla barra orizzontale. Qui le vedete separate per colore, per evidenziare la suddivisione in ottavi della rete, ma che sono ambedue appartenenti alla stessa subnet B.
    Ora rimangono i numeri che vanno da 192 a 223 (.1100000. a .11011111.) ed i numeri che vanno da 224 a 255 (.11100000. a .11111111.). Prendiamo il primo blocco ed assegnamolo al reparto C, ecco creata la terza subnet, non compresa in nessuno dei due altri reparti e composta di 8192 indirizzi (32 blocchi di 256 host ciascuno = 32x256 = 8192 host).
    Anche in questo disegno vedete due tabelle in cui ho messo dei valori di esempio del terzo ottetto, in decimale e binario, e, nella seconda colonna, il risultato dell'ANDing dei primi 4 bit con i primi 4 bit della netmask utilizzata. La subnet per C è evidenziata in viola.

    Abbiamo così creato tre subnet di grandezza differente e non sovrapposte.

    A volte può essere utile avere una subnet compresa in un’altra più grande, non era questo però il caso del mio esempio.

    LA STORIA DEGLI HOST -2

    Più sopra ho messo talvolta, tra parentesi, un numero equivalente a quello precedente diminuito di due unità. Il motivo è legato al discorso, che per semplificare quanto sopra lo tratto solo alla fine, degli indirizzi dei pc e di quegli indirizzi definiti generici.
    Il termine "generico" lo uso per differenziare un indirizzo IP specifico e legato ad una singola interfaccia da quello che è invece riferito a più host.

    Qualunque rete informatica ha due indirizzi che servono a scopi ben precisi. Uno è il primo indirizzo disponibile in quella rete e l'altro è l’ultimo indirizzo disponibile.

    Il primo è detto indirizzo di rete o net-id e serve ad identificare la rete stessa.
    In caso di una rete tipo 192.168.105.0/24, una normale rete come quelle delle nostre case, sappiamo da quanto detto finora che l’ultimo ottetto rappresenta l’insieme (in questo caso che abbiamo un /24) di tutti gli host possibili in questa rete.
    Come si vede dalla stessa notazione CIDR si capisce subito che il primo indirizzo che automaticamente vorremmo assegnare ad un host, quello con .0 (192.168.105.0) coinciderebbe con la stesso notazione. Quindi dei 256 indirizzi realmente disponibili per gli host, dobbiamo già toglierne uno.

    Il secondo, detto indirizzo di broadcast è sempre l’ultimo di tutta la rete (senza approfondire, il motivo è legato all’operazione binaria, OR su netmask invertita, che viene eseguita per identificarlo). Quindi, in questo semplice esempio, sarà 192.168.105.255. Si chiama indirizzo di broadcast perché serve proprio, come i mezzi di comunicazione, ad inviare un messaggio a tutti gli host di una rete.
    Il motivo può essere quello di sapere quale tra gli host ha un nome preciso (il MAC address). È come se il router urlasse in una sala (paragonata alla stessa rete) chiedendo: chi si chiama Piero tra i presenti?

    Ora capirete perché, quando sopra ho evidenziato il numero di host, per i vari esempi di reti e sottoreti, ho messo due numeri: uno che era il risultato matematico e l’altro il risultato mostrante gli indirizzi realmente disponibili per i singoli host.

    Prima ho detto però che il net-id e il broadcast sono rispettivamente il primo e l’ultimo della rete. Tuttavia è bene osservare che, nel caso di più sottoreti, non ci sarà solo uno 0 ed un 255, come nel mio esempio, ma ci saranno più indirizzi di rete e più indirizzi di broadcast.

    Una volta individuata la sottorete si dovrà procedere a identificare questi due indirizzi per ciascuna di esse.
    Prendiamo ad esempio quelle 8 sottoreti che abbiamo utilizzato più sopra. Avevo scritto una tabella di 8 blocchi, 0-31, 32-63, ecc....
    Volendo identificare l'indirizzo di rete e di broadcast per il primo blocco, ad esempio, si può vedere facilmente che il primo indirizzo è quello che ha lo zero finale e il secondo indirizzo avrà il 31 finale.
    Per il secondo blocco avremo come indirizzo di rete quello con il 32 finale e come indirizzo di broadcast quello con il 63 finale. Ovviamente sto parlando di una rete di classe C divisa in 8 sottoreti, quindi l'indirizzo di rete e di broadcast sono riferiti a specifici host.
    Se questi numeri fossero invece riferiti al terzo ottetto, come nell’esempio che ho fatto sopra di gruppi di sottoreti, il discorso non è lo stesso. Infatti potremmo avere benissimo una sottorete 192.168.0.xxx ed un’altra 192.168.255.xxx.

    Per ultimo vorrei sottolineare che il numero di indirizzi disponibili per pc od host, in una sottorete normale, potrebbe essere non n-2 ma n-3.
    Pensate infatti se nella sottorete (anche VLAN) c’è bisogno di un server DHCP? Il router, normalmente preposto a ciò, dovrà avere un indirizzo nella stessa rete, quindi, ad essere pignoli, si può dire che questo terzo indirizzo non è disponibile per un normale pc od host.
    Questa considerazione, che qui ha solo lo scopo di evidenziare un cavillo, potrebbe essere importante nel caso di un soggetto che deve mettere in comunicazione esattamente 254 pc di altrettanti impiegati su una rete di classe C. Mancherebbe l’indirizzo per il router della rete, a meno di costruire un router da uno dei pc dopo avere installato Virtualbox ed avere emulato la seconda scheda di rete!!!

    TAF!

    Quanto sopra è lungo, ma i concetti sono pochi e ripetuti in maniera differente, per aiutare la comprensione. Chiedo scusa per castronerie ed inesattezze (fatte in buona fede, ovviamente). Chiunque voglia segnalarmi errori o qualsiasi cosa non sia corretto, sotto, trova il mio indirizzo mail.