Ogni dispositivo che si collega ad una rete, che sia locale (LAN) o pubblica (Internet), per esserne parte e poter comunicare/interagire con gli altri dispositivi della rete, ha bisogno di un identificativo univoco chiamato indirizzo IP (Internet Protocol). L'indirizzo IP viene assegnato automaticamente dalla rete stessa che accoglie il dispositivo come nuovo host, oppure, nel caso in cui non venga assegnato automaticamente, può essere formulato manualmente in base alle regole della rete stessa.
Tipologie di indirizzi IP: IPv4 e IPv6
Esistono due versioni di indirizzi IP:
IPv4 (Internet Protocol Version 4): la versione più comune e usata fin dagli anni '80, utilizza indirizzi a 32 bit che permettono di avere circa 4,3 miliardi di combinazioni di indirizzi.
IPv6 (Internet Protocol Version 6): upgrade della precedente versione, utilizza indirizzi a 128 bit offrendo un numero di indirizzi pari a 340 undecilioni (un numero con 36 zeri).
La differenza sostanziale tra le due versioni sta, appunto, nel quantitativo di HOST che riescono a gestire:
IPv4, la versione più diffusa, riesce a gestire un minor quantitativo di HOST rispetto a IPv6. Questo fattore assume maggior rilevanza quando si pensa a una rete molto estesa come Internet.
IPv6, infatti, è stato sviluppato per superare i limiti di IPv4, che su larga scala può fornire, come detto, circa 4,3 miliardi di indirizzi IP per gli host in tutto il mondo, cioè un numero finito. Con l'aumento costante dei dispositivi connessi a Internet, questa quantità non è più sufficiente a coprire il fabbisogno. IPv6, invece, è progettato per offrire un numero di indirizzi incredibilmente più ampio: 340 undecilioni (ovvero un numero con 36 zeri!).
Va da sé che, a meno di configurazioni specifiche, per le reti locali, trattandosi di piccole reti, è più appropriato usare un IPv4.
Struttura di un indirizzo IP (IPv4)
Un indirizzo IPv4 è composto da quattro gruppi di numeri decimali separati da un punto, come quello che trovate di seguito:
192.168.0.1
Ogni gruppo, che nel gergo tecnico viene definito ottetto, rappresenta la conversione di 8 bit da binario a decimale. Il totale di 4 ottetti (8 bit x 4 gruppi) fornisce i 32 bit necessari per un indirizzo IPv4.
Ottetto = un gruppo di 8 bit, che rappresenta un valore compreso tra 0 e 255 in forma decimale.
Conversione di un indirizzo IP: da binario a decimale
La rappresentazione binaria di un indirizzo IP è composta da 32 bit divisi in 4 ottetti. Ad esempio, l'indirizzo IP 192.168.0.1 in binario sarebbe:
11000000.10101000.00000000.00000001
È possibile convertire un numero binario in decimale sommando i valori corrispondenti ai bit impostati a 1, partendo da destra verso sinistra, e considerando che ogni posizione rappresenta una potenza di 2.
Ad esempio, provando a convertire il primo ottetto – 11000000 – in decimale, otteniamo 192 semplicemente sommando la progressione su base 2 dei primi due bit a sinistra.
Al fine di comprendere meglio, vediamo la conversione da binario a decimale di tutto l'indirizzo IP
Primo ottetto 1 x 27 = 128 1 x 26 = 64 0 x 25 = 0 0 x 24 = 0 0 x 23 = 0 0 x 22 = 0 0 x 21 = 0 0 x 20 = 0 Somma dei bit impostati a 1: 192 Secondo ottetto 1 x 27 = 128 0 x 26 = 0 1 x 25 = 32 0 x 24 = 0 1 x 23 = 8 0 x 22 = 0 0 x 21 = 0 0 x 20 = 0 Somma dei bit impostati a 1: 168 Terzo ottetto 0 x 27 = 0 0 x 26 = 0 0 x 25 = 0 0 x 24 = 0 0 x 23 = 0 0 x 22 = 0 0 x 21 = 0 0 x 20 = 0 Somma dei bit impostati a 1: 0 Quarto ottetto 0 x 27 = 0 0 x 26 = 0 0 x 25 = 0 0 x 24 = 0 0 x 23 = 0 0 x 22 = 0 0 x 21 = 0 1 x 20 = 1 Somma dei bit impostati a 1: 1
L'indirizzo IP finale, convertito in decimale, è quindi 192.168.0.1.
Il formato decimale consente di esprimere l'indirizzo IP in una forma più "UserFriendly", cioè più leggibile dall'uomo rispetto a quella binaria.
Per chi volesse approfondire ulteriormente sul codice binario trovate un contenuto dedicato qui di seguito:
Subnet Mask
Per comprendere meglio lo scopo di un indirizzo IP, possiamo immaginare la nostra rete locale come una città, e gli indirizzi IP come le strade con i relativi numeri civici. Ogni indirizzo rappresenta una posizione precisa nella città, permettendoci di sapere esattamente dove si trova un determinato edificio o abitazione. Allo stesso modo, ogni indirizzo IP ci permette di individuare e raggiungere un dispositivo specifico all'interno della rete. Il concetto è simile!
Alla luce dell'analogia, possiamo usare un indirizzo IP per identificare due componenti principali: la rete (la città nell'analogia) e l'host/dispositivo (cioè l'edificio nell'analogia). Per distinguere e rappresentare queste due parti nel contesto informatico, ci serviamo di uno strumento specifico denominato Subnet Mask, che definisce quali bit dell'indirizzo IP sono dedicati alla rete e quali agli host.
Facciamo un semplice esempio per comprendere meglio il funzionamento; se utilizziamo una Subnet Mask come questa 255.255.255.0, significa che i primi 24 bit (i primi tre ottetti dell'indirizzo IP) sono riservati alla rete, mentre gli ultimi 8 bit (l'ultimo ottetto dell'indirizzo IP) sono destinati all'host.
Quindi, se ad esempio abbiamo il seguente indirizzo IP: 192.168.0.1 e la seguente Subnet Mask 255.255.255.0:
- 192.168.0 è la parte che identifica la rete (i primi 3 ottetti).
- 1 è la parte che identifica l'host all'interno della rete (l'ultimo ottetto).
Ora, se volessimo ridurre il numero di bit dedicati alla rete e aumentarli per gli host, potremmo utilizzare una Subnet Mask differente come questa 255.0.0.0, che riserva solo il primo ottetto (8 bit) per la rete e lascia ben 24 bit per gli host.
Quindi, se ad esempio abbiamo il seguente indirizzo IP: 192.168.0.1 e la seguente Subnet Mask 255.0.0.0:
- 192 è la parte che identifica la rete.
- 168.0.1 è la parte che identifica l'host all'interno della rete.
- Se vogliamo una rete piccola, possiamo sfruttare la Subnet Mask per destinare più ottetti alla rete e meno agli host.
- Se vogliamo una rete grande, possiamo sfruttare la Subnet Mask per destinare meno ottetti alla rete e più agli host.
Indirizzi IP statici e dinamici
Gli indirizzi IP possono essere assegnati ad un dispositivo sia staticamente (configurandolo manualmente nelle impostazioni della scheda di rete) oppure automaticamente tramite un server DHCP.
Un server DHCP (Dynamic Host Configuration Protocol) è un'applicazione, generalmente integrata nei router, che gestisce e assegna automaticamente gli indirizzi IP ai dispositivi che si connettono a una rete locale (LAN). Questo spiega perché, ogni volta che colleghiamo un computer, uno smartphone o qualsiasi altro dispositivo alla nostra rete, che sia in Wi-Fi o Ethernet, non è necessario configurare manualmente un indirizzo IP. Il server DHCP si occupa di assegnarlo in modo automatico, evitando conflitti, come quando due dispositivi tentano di utilizzare lo stesso indirizzo IP.