Indirizzi IP, classi e Subnetting

INTRODUZIONE

Iniziamo dicendo che per proseguire bisogna avere dimestichezza con le trasformazioni di base in binario e con le operazioni di logiche di base su di essi come l'AND, l'OR e il complemento.
Partiamo! Ciascuna interfaccia di rete, sia cablata che wireless (wifi, bluethooth, cellulare, etc...), ha un identificativo (sequenza di numeri) associato, una sorta di numero di matricola, un seriale se volete, che serve ad identificare l'interfaccia a livello hardware all'interno della rete. Semplificando, quindi, si può parlare di indirizzo "hardware". Questo identificativo si chiama indirizzo MAC (MAC address), è unico e serve ad identificare l'interfaccia di rete a bassissimo livello di astrazione (livello di collegamento, vedi immagine successiva).
Nota aggiuntiva: l'indirizzo MAC delle interfacce radio-cellulari si chiama IMEI.

Salendo di livello (nell' immagine precedente livello di rete) troviamo l' indirizzo IP, chiamato anche indirizzo logico, che rappresenta un identificativo "software" per le interfacce in una rete logica. L'indirizzamento IP permette di identificare ogni host (genericamente computer o apparto) all'interno di una rete TCP/IP a livello software. Grazie all'utilizzo di particolari accorgimenti come le classi di indirizzi ed il subnetting (spiegazione di seguito) è possibile organizzare e gestire in modo efficiente la gestione della propria rete. Tale indirizzo IP in combinazione con l'indirizzo MAC permette di inviare (e ricevere) con certezza i flussi di comunicazione tra due interfacce di rete ovunque essi siano nel mondo (come si dice comunemente "via internet").


COS'È UN INDIRIZZO IP

Un indirizzo IP è un numero di 32 bit suddiviso in quattro gruppi da 8 bit ciascuno (chiamati ottetti) e la forma con la quale viene solitamente rappresentato è detta decimale puntata (Dotted Decimal).
Essendo ogni numero rappresentato da 8 bit, può assumere un range di valori da 0 a 255.

In altre parole x.y.z.w dove x, y, z e w sono numeri che vanno da 0 a 255. Per esempio 192.168.0.1 o 10.0.0.254 etc...

Questo è un esempio di indirizzo IP con le sue rappresentazioni:
          192.          168.              5.                2 : Rappresentazione decimale
11000000.10101000.00000101.000000010 : Rappresentazione binaria

Utilizzando 32 bit totali per ciascun indirizzo è possibile avere 4.294.967.296 combinazioni di indirizzi differenti. In realtà esistono alcuni indirizzi particolari, di conseguenza non tutti i valori sono disponibili al fine di identificare un host nella rete.

 

INDIRIZZI SPECIALI: NETWORK, BROADCAST E LOOPBACK

Esistono alcuni particolari indirizzi di rete che non possono essere assegnati per l'identificazione di un host, tra questi abbiamo:  network e broadcast e loopback:

Network: Serve ad identificare una rete specifica. I bit che rappresentano il numero dell' host hanno tutti valore 0. L'indirizzo è detto di rete o Network Address: per esempio 192.168.5.0 che in binario è 11000000.10101000.00000101.00000000;

Broadcast: quando i bit del numero che rappresenta l'host hanno tutti valore 1, l'indirizzo è detto di broadcast o broadcast address, e rappresenta tutti gli host di quella rete. Inviare un pacchetto all'indirizzo 192.168.5.255 in una rete 192.168.5.0 (o in forma binaria 11000000.10101000.00000101.11111111) equivale a mandare un pacchetto a tutti gli host della rete 192.168.5.0L'indirizzo host di broadcast di ogni rete può essere calcolato facendo il complemento dei bit della subnet mask, a volte indicato come maschera inversa. L'indirizzo Ip completo di broadcast quindi si può calcolare con un OR bit per bit dell'indirizzo IP dell'host e quello della sua rete (che corrsponde a settare i bit dell'host tutti a 1).;

Broadcast di rete: abbiamo questo tipo di indirizzo quando tutti i bit, sia della parte relativa all'host sia della parte relativa alla rete hanno valore 1. Inviare un pacchetto a 255.255.255.255 o in binario 11111111.11111111.11111111.11111111 significa inoltrarlo verso tutti gli host della rete corrente;

Questo host: quando tutti i bit hanno valore zero 0.0.0.0, identificano "questo host"; 

Loopback: è utilizzato per funzioni di test del protocollo TCP/IP, non genera traffico di rete e corrisponde all'indirizzo 127.0.0.1;

 

CLASSI DI INDIRIZZI

Per permettere una migliore organizzazione della rete, gli indirizzi disponibili sono stati suddivisi in classi in base alle dimensioni del network da gestire. In questo modo si verrando utilizzate le classi più adatte ad alla dimensioni della rete, con conseguente minore spreco di ip address. Sono disponibili cinque classi di indirizzi IP, di cui solo le prime tre possono essere utilizzate per assegnare indirizzi agli host.

Indirizzi di classe A
Il valore del primo ottetto è compreso tra 1 e 126 (i primi otto bit di questo indirizzo saranno: 0*****).  
E' rappresentata da indirizzi di tipo: Rete.Host.Host.Host ovvero 8 bit per la identificare la rete (di cui il primo fisso a 0) e 24 per identificare gli host. Permette di ottenere 126 reti formate da 16.774.214 host ciascuna.

Indirizzi di classe B  
Il valore del primo ottetto è compreso tra 128 e 191 (I primi otto bit di questo indirizzo saranno: 10*****).  
E' rappresentata da indirizzi di tipo: Rete.Rete.Host.Host ovvero 16 bit per la identificare la rete (di cui i primi due fissi a 10) e 16 per identificare gli host. E' possibile ottenere 16.384 reti formate da 65.534 host ciascuna.
  
Indirizzi di classe C  
Il valore del primo ottetto è compreso tra 192 e 223 (I primi otto bit di questo indirizzo saranno: 110*****).  
E' rappresentata da indirizzi di tipo: Rete.Rete.Rete.Host ovvero 24 bit per la identificare la rete (di cui i primi tre fissi) e 8 per identificare gli host. E' possibile ottenere 2.097.152 reti con 254 host ciascuna.

Indirizzi di classe D
Il valore del primo ottetto è compreso tra 224 e 239 (I primi otto bit di questo indirizzo saranno: 1110****).  
Sono indirizzi di rete riservati ai gruppi multicast e non assegnabili ai singoli host.

Indirizzi di classe E  
Il valore del primo ottetto è compreso tra 240 e 255 (I primi otto bit di questo indirizzo saranno: 1111****).  
Sono indirizzi riservati per usi futuri.

 

INDIRIZZI IP PRIVATI

Alcune classi di indirizzi, definite nella RFC 1918, vengono chiamati privati e sono utilizzati per le reti locali CHE NON DEVONO essere connesse ad internet:  
Da 10.0.0.0.0 a 10.255.255.255.255  
Da 172.16.0.0 a 172.31.255.255  
Da 192.168.0.0 a 192.168.255.255 

 

 


Questi indirizzi non possono essere utilizzati in Internet, e sono riservati per utilizzi in reti interne. Qualora però un host all'interno di un lan si connetta ad internet il suo indirizzo verrà riscritto tramite NAT (Network Address Traslation) da un router o una macchina che fa da gateway verso Internet, facendosi carico pubblicamente di tutte le richieste provenienti dalla LAN privata.

Seguendo lo stesso esempio precedente possiamo dire che si tratta di una indirizzo privato

di Classe C in cui 192.168.5 identifica la rete di appartenenza dell'host 2.
         Rete.         Rete.        Rete.          Host
          192.          168.              5.                2 : Rappresentazione decimale
11000000.10101000.00000101.000000010 : Rappresentazione binaria

 

LE SUBNET MASK

Dal precedente ragionamento ne consegue che deve esistere una maniera per distinguere la porzione di indirizzo che si riferisce alla rete e quella che invece indica il numero dell' host, quindi determinare se due host appartengono alla stessa rete o a reti diverse. La subnet mask serve proprio a questo.
Per il corretto funzionamento di una rete, ogni host deve poter distinguere quale parte dell'indirizzo identifica l'host e quale la rete di propria appartenenza.
Per quanto riguarda le classi A B C standard, cioè non ulteriormente suddivise, esistono delle subnet di default:  
- Classe A: Rete.Host.Host.Host ha come subnet 255.0.0.0;  
- Classe B: Rete.Rete.Host.Host ha come subnet 255.255.0.0;  
- Classe C: Rete.Rete.Rete.Host ha come subnet 255.255.255.0.

 

 

Per le ulteriori suddivisioni vedere il paragrafo riferito al subnetting.

Il processo di messa in AND
Per determinare se il destinatario dei propri pacchetti si trova sulla propria sottorete ogni host utilizza la propria maschera di sottorete durante un processo chiamato di messa in AND (ANDing process). Questo processo consiste nel confrontare il risultato dell'operazione di AND (matematica booleana) bit a bit tra il proprio indirizzo e la propria maschera subnet mask con quello tra l'indirizzo del destinatario e la propria subnet mask.  

Avendo un Host A con IP 192.168.0.5 con subnet 255.255.255.0 che vuole inviare dei pacchetti ad un Host B 192.168.0.25 con subnet 255.255.255.0, esso deve determinare se B è sulla stessa sua sottorete:  

Host A: 192.168.0.5  
11000000.10101000.00000101.000000010 : Ip address Host A  
11111111.11111111.11111111.000000000 : Subnet mask Host A  
  
11000000.10101000.00000101.000000000 : Risultato operazione AND bit a bit  

Host B: 192.168.0.25  
11000000.10101000.00000101.000011001 : Ip address Host B  
11111111.11111111.11111111.000000000 : Subnet mask Host B  

11000000.10101000.00000101.000000000 : Risultato operazione AND bit a bit  

Il risultato è identico, quindi, i due host possono inviarsi direttamente i pacchetti in quanto sulla stessa sottorete. Qualora il processo di AND avesse evidenziato valori diversi, i due host non avrebbero potuto comunicare direttamente, ma sarebbe stato necessario un router tra di essi.

NOTAZIONI  
Esistono due principali notazioni attraverso le quali è possibile indicare un indirizzo IP:  
- Indicando espressamente la subnet mask:  
  49.22.5.3 255.0.0.0 - Classe A;  
  172.16.20.5 255.255.0.0 - Classe B;  
  192.168.15.4 255.255.255.0 - Classe C;  
- Indicando i bit che compongono la subnet mask:  
  49.22.5.3/8 - Classe A;  
  172.16.20.5/16 - Classe B;  
  192.168.15.4/24 - Classe C.

 
SUBNETTING

L'utilizzo della classe di rete corrispondente alle dimensioni che più si avvicinano a quella che si vuole gestire a volte non è sufficiente. Può essere necessario, dover suddividere la rete in ulteriori sottoreti. Per fare questo è possibile utilizzare la tecnica del subnetting.
Il subnetting di una rete comporta diversi vantaggi:  
- Minor spreco di indirizzi: in quanto è possibile scegliere il numero di host che faranno parte della sottorete;  
- Riduzione del traffico di rete: in quanto si riduce il dominio di broadcast (broadcast domain);  
- Miglioramento delle performance della rete: in conseguenza della riduzione del traffico;  
 

Il subnetting consiste nell'utilizzare alcuni bit "presi in prestito" (borrowed) dalla parte host dell'indirizzo di rete.

 E' possibile procedere alla suddivisione della rete in sottoreti più piccole tramite lo schema seguente:

- Determinare il numero di sottoreti necessarie
E' necessario tenere presente che il numero di subnet che si possono creare è dato da 2 x - 2 dove x è rappresentato dai bit presi in prestito dalla parte host dell'indirizzo ai quali naturalmente bisogna levare l'indirizzo di broadcast quello di rete non assegnabili. Esempio: utilizzando prendendo in prestito 4 bit, sarà possibile creare 14 sottoreti;  

- Determinare il numero di host per ogni sottorete.
Questo valore è dato da 2 y-2 dove y è il numero di bit rimasti per la rappresentazione degli host; Esempio: se i bit rimanenti sono 6 si potranno avere sottoreti formate da 62 host l'una;  

- Determinare le subnet valide
Questo valore è dato da 256 - z, dove z rappresenta il valore della subnetmask. Esempio: con una subnetmask di valore 224 avremmo avuto 256 - 224 = 32. Questo valore è il valore della prima subnet valida ed è anche la base per le successive, la cui progressione sarà: 32, 64, 96, 128, 160, 192;  

- Determinare gli host validi.  
Sono rappresentati da tutti i valori compresi tra le subnet create togliendo gli indirizzi di broadcast e network;

- Determinare degli indirizzi di broadcast e network delle subnet.  
Sono gli indirizzi in cui rispettivamente i bit della parte host sono settati a 1(broadcast) e a 0(network);


ESEMPIO SUBNETTING DI UNA RETE DI CLASSE C  
Esaminiamo il caso di una rete con IP 192.168.5.0 che da suddividere in due sottoreti.

Deteriminare il numero di sottoreti necessarie.
Volendo creare 2 sottoreti è necessario utilizzare 2 bit dalla parte host in quanto 2 2 - 2 = 2. Avremmo quindi una subnetmask di questo tipo 255.255.255.192. E' possibile notare che in binario 192 equivale a 11000000, i primi due bit vengono utilizzati per le subnet ed i restanti 6 per gli host;

Determinare il numero di host per ogni sottorete.  
I bit rimasti per gli host sono 6 quindi, abbiamo 2 6 - 2 = 62 indirizzi di host validi per sottorete;

Determinare le subnet valide.  
Le subnet che si andranno a creare sono due con base data da 256-192=64. Questo significa che la progressione delle subnet valide sarà 64 e 128 ovvero 192.168.5.64 e 192.168.5.128.  

Determinare gli host validi.  
Gli host validi sono rappresentati dai valori compresi tra le subnet esclusi gli indirizzi di broadcast e di network. Avremo quindi gli indirizzi da 192.168.5.65 a 192.168.5.126 per la prima subnet e 192.168.5.129 a 192.168.5.190 per la seconda;    

Determinare gli indirizzi di broadcast e network delle subnet.  
Gli indirizzi di rete (bit della parte host settati a zero) saranno 192.168.5.64 per la prima subnet e 192.168.5.128 per la seconda, mentre gli indirizzi di broadcast (i bit della parte host dell'indirizzo settati a 1) saranno rispettivamente 192.168.5.127 e 192.168.5.191.

il calcolo dell'indirizzo di broadcast quindi concettualmente non varia rispetto ai casi precedenti. Altro esempio: immaginate di avere un sistema con indirizzo IP 192.168.12.220 e una maschera di rete 255.255.255.128. Ricordo, per fare questo calcolo, è necessario convertire tutti i numeri di valori binari e applicare l'OR bit a bit.

Indirizzo IP: 11000000.10101000.00001100.11011100
Reverse Mask: 00000000.00000000.00000000.01111111
OR bit a bit: -----------------------------------------------
Broadcast: 11000000.10101000.00001100.11111111

Convertendo il valore binario ottenuto a ottale (o decimale, il rultato non cambiasi ottiene 192.168.12.255.


Riepilogo
Un riepilogo è necessario per fissare e chiarire meglio i concetti. Consideriamo la seguente affermazione.
Rete di partenza: 192.168.5.0 255.255.255.0 suddivisa in due sottoreti tramite la subnet 255.255.255.192:  
Subnet 1: 192.168.5.64 in binario 11000000.10101000.00000101.01000000  
Primo indirizzo valido: 192.168.5.65 in binario 11000000.10101000.00000101.01000001  
Ultimo indirizzo valido: 192.168.5.126 in binario 11000000.10101000.00000101.01111110  
Broadcast: 192.168.5.127 in binario 11000000.10101000.00000101.01111111  
Subnet 2: 192.168.5.128 in binario 11000000.10101000.00000101.10000000  
Primo indirizzo valido: 192.168.5.129  in binario 11000000.10101000.00000101.10000001  
Ultimo indirizzo valido: 192.168.5.190 in binario 11000000.10101000.00000101.10111110  
Broadcast: 192.168.5.191 in binario 11000000.10101000.00000101.10111111


  
Questo procedimento è lo stesso da applicare anche per il subnetting delle classi A e B, con la differenza di poter creare un maggior numero di subnet.

Inutile ricordare che trattandosi di reti diverse per passare da una all'altra bisogna usare un router, anche se le sottoreti sno la suddivisione di una più grande i pacchetti non possono passare da una all'altra senza un router.

 

CIDR

Successivamente si è pensato di svincolare gli indirizzi dal concetto di classe, per due motivi principali:

  • Molti utilizzatori di Internet (enti o aziende) avevano bisogno di un numero di indirizzi IP pubblici superiore a quello gestibile con una rete di classe C (254), ma generalmente inferiore a quello gestibile con una rete di classe B (65534). Tipicamente si facevano assegnare una rete di classe B e molti degli indirizzi possibili rimanevano inutilizzati. Ciò ha portato ad una rapida diminuzione degli indirizzi di classe B disponibili.
  • Le tabelle di instradamento (routing table) dei router delle backbones (linee principali di Internet) erano diventate enormi e difficili da mantenere, in quanto le routing table contenevano un numero enorme di indirizzi di rete, di cui molti erano relativi ad una stessa organizzazione o azienda, che magari si era fatta assegnare più reti di classe C per soddisfare le proprie esigenze.

Il CIDR (Classless Inter-Domain Routing) è il metodo ad oggi utilizzato per indicare gli indirizzi IP, che ha soppiantato l’utilizzo delle classi. Questo si basa sui concetti di subnet mask o di net prefix, che indicano quanti sono i bit dell’indirizzo IP che identificano il net id e permettono di avere una gestione molto più flessibile dello stesso.

La subnet mask è una sequenza di 32 bit (la stessa lunghezza degli indirizzi IP) ognuno dei quali indica se considerare i corrispondenti bit dell’indirizzo IP come facenti parte del net id (quelli posti a 1) oppure facenti parte dell’host id (quelli posti a 0) (v. fig. ##########). Da quanto illustrato, i bit della subnet mask impostati ad 1 devono essere consecutivi e quelli che compongono la parte più significativa della maschera.

  Ad esempio, per specificare il net id e l’host id che costituiscono l’indirizzo IP 192.168.58.147, con subnet mask 255.255.240.0, si può utilizzare la notazione 192.167.58.147/255.255.240.0  
Allo stesso modo è possibile utilizzare il net prefix che è un numero che indica il numero di bit di un indirizzo IP che fanno parte del net id. Rifacendosi al caso precedente si può scrivere 192.167.58.147/20  
Gli indirizzi IP vengono quindi specificati posponendo all’indirizzo vero e proprio la relativa subnet mask od il relativo net prefix.

 

In questo modo è possibile, ad esempio, creare una rete con 510 (29 - 2) indirizzi utili, semplicemente scegliendo il prefisso 23. Contemporaneamente si riducono le routing table, perché le reti che prima erano formate da più reti di classe C, possono essere realizzate con un’unica rete con prefisso minore di 24 in modo da utilizzare un solo riferimento (un unico record) nelle routing table.

 

ULTERIORI NOTE SULL'INDIRIZZO DI BROADCAST

Nella maggior parte dei casi l'indirizzo di broadcast sarà impostato correttamente dal sistema operativo moderno, una volta immessi l'indirizzo IP e la subnet mask. In alcuni vecchi sistemi Unix che utilizzano definizioni classful di sottoreti, l'indirizzo di broadcast è formata in modo improprio, e hai bisogno di cambiarlo manualmente.

 

Cambiare gli indirizzi di broadcast in sistemi Windows

I sistemi Windows non consentono di modificare l'indirizzo di broadcast a mano. È possibile, tuttavia, scegliere se il sistema utilizza trasmissioni di tipo zero o quelle trasmissioni. Per cambiare un sistema Windows di utilizzare trasmissioni di tipo zero, utilizzare la seguente procedura:

  • Accedere al sistema di Windows con un account con diritti di amministratore.
  • Aprite il vostro editor del Registro di sistema. Se non si knowledgable utilizzando l'editor del Registro di sistema per Windows, si prega di non eseguire questa procedura. Un errore può rendere il sistema inutilizzabile.
  • Trovare la chiave di registro "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \ [Adapter ID]". Sostituire [Adapter ID] con l'adattatore effettivo ID che si desidera modificare l'indirizzo di broadcast per. È possibile ottenere un elenco di tutti gli ID scheda nel vostro sistema Windows con l'apertura di un prompt dei comandi, e l'esecuzione di un ipconfig "/ tutto il comando".
  • Create un nuovo valore DWORD denominato "UseZeroBroadcast". Impostare il valore iniziale che a "1". È possibile utilizzare un valore esadecimale o binario, in questo caso, a partire dal 1 è la stessa per entrambi i sistemi di numerazione.
  • Riavviare il sistema affinché le modifiche abbiano effetto.
  • Hai attivato zeri-broadcast per tale scheda.

Cambiare indirizzi di broadcast in Sistemi Unix

Sistemi Unix danno all'amministratore di un metodo per cambiare l'indirizzo di broadcast di qualsiasi valore che credono di cambiare al. Assicurarsi di sapere cosa si sta facendo prima di cambiare il vostro indirizzo di broadcast. In alcuni casi, quando si utilizza ifconfig dalla riga di comando, l'indirizzo broadcase viene impostato su una trasmissione classful basa invece della trasmissione corretta. È possibile verificare i risultati utilizzando il ifconfig "comando". Purtroppo, ogni sistema Unix ha diverse sintassi per il comando ifconfig, e non tutte le opzioni di comando sono disponibili per tutti i sistemi Unix. Controlla la tua pagina man ifconfig se si ottiene riattaccato. La procedura di esempio è il processo che si usa su un sistema Linux per modificare un indirizzo di broadcast di sistema.

 

  • Aprire una finestra di terminale, telnet, ssh o nel sistema Unix in questione, e accedere al sistema.
  • "Su" o "sudo" comandi correttamente per ottenere i privilegi di root.
  • Determinare la scheda che si desidera modificare l'indirizzo di broadcast sul sistema controllando l'output di "ifconfig-a".
  • Eseguire "ifconfig <interface> <indirizzo IP> <broadcast broadcast address>". Sostituire <interface> <indirizzo IP> e <broadcast address> con i valori corretti.
  • Verificare la configurazione.

 

 

 

 

 

 

Pin It