Internet Protocol
L'Internet Protocol (IP) è un protocollo di rete a pacchetto; secondo la classificazione ISO/OSI è di livello rete (3).
La versione correntemente usata del protocollo IP è detta anche IPv4 per distinguerla dalla più recente IPv6, nata dall'esigenza di gestire meglio il crescente numero di computer connessi ad Internet.
IP è un protocollo di interconnessione di reti (Inter-Networking Protocol), nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione.
I protocolli di trasporto utilizzati su IP sono soprattutto TCP e UDP.
Indirizzo IP
All'interno di una rete ad ogni macchina viene assegnato un indirizzo univico, in modo da rendere possibili le comunicazioni tra un computer e l'altro.
Indirizzi IP ed indirizzi MAC
I protocolli di collegamento, al livello 2 del modello OSI, indirizzano i calcolatori utilizzando il MAC address.
Quando su una rete locale si utilizza IP, ad ogni calcolatore deve essere assegnato anche un indirizzo IP, per permettergli di comunicare con i calcolatori al di fuori della sua rete locale.
La corrispondenza tra indirizzo IP ed MAC address è gestita tramite il protocollo ARP, che permette di conoscere il MAC address di un computer dato il suo indirizzo IP.
L'assegnazione di un indirizzo IP ad un calcolatore può essere manuale, o automatizzata da protocolli come DHCP o i più desueti BOOTP e RARP.
IPv4
L'indirizzo IPv4 è formato da 32 bit; viene descritto con 4 numeri decimali rappresentati su 1 byte (quindi ogni numero varia tra 0 e 255) separati dal simbolo "punto"; un esempio di indirizzo IPv4 è 192.0.34.166.
Reti e Host
Un indirizzo IP è diviso in due parti: la prima indica la sottorete a cui appartiene l'indirizzo, l'altra indica l'host all'interno della sottorete. Se un host deve comunicare con un altro host della stessa sottorete, userà il protocollo di livello 2 della rete a cui è collegato, altrimenti dovrà inviare i pacchetti ad un gateway o router, che sarà connesso ad altre reti e si occuperà di inotrare i pacchetti ricevuti.
Per indicare quali bit fanno parte dell'indirizzo di sottorete e quali fanno parte dell'indirizzo dell'host, si usa la maschera di sottorete (subnet mask), che a sua volta è un numero a 32 bit rappresentato come un indirizzo IP.
I bit che nella maschera di sottorete sono a 1 fanno parte dell'indirizzo della sottorete, gli altri sono l'indirizzo dell'host. Normalmente, la maschera di sottorete è costituita da N bit a 1 seguiti da (32-N) bit a 0, e può essere abbreviata nella forma /N.
Storicamente, gli indirizzi IPv4 sono stati divisi in quattro classi, e i primissimi bit dell'indirizzo indicano l'appartenenza di un indirizzo ad una classe:
- classe A: il primo byte rappresenta la rete, gli altri l'host; [0-127].x.x.x. La maschera di sottorete è 255.0.0.0, o /8. Questi indirizzi iniziano tutti con un bit a .
- classe B: i primi due byte rappresentano la rete, gli altri l'host; [128-191].y.x.x (gli y sono parte dell'indirizzo di rete, gli x dell'indirizzo di host). La maschera di sottorete è 255.255.0.0, o /16. Questi indirizzi iniziano con la sequenza
- classe C: i primi 3 byte rappresentano la rete, gli altri l'host; [192-223].y.y.x. La maschera di sottorete è 255.255.255.0, o /24. Questi indirizzi iniziano con la sequenza
- classe D: riservata agli indirizzi multicast: [224-255].x.x.x
Questa divisione è ora superata, e per permettere un migliore sfruttamento degli indirizzi IP disponibili è possibile usare maschere di sottorete di qualunque lunghezza. Questa tecnica è detta CIDR (Classless Internet Domain Routing). La maschera della vecchia classe C è ancora popolare, ma si usano anche maschere più corte per reti grandi (/23 o /22) o più lunghe per reti piccole (/25, /26, fino a /30 per reti punto-punto).
Il numero di indirizzi univoci disponibili in IPv4 è , ma bisogna tener presente che non vengono usati tutti, perchè alcuni sono riservati a un particolare utilizzo (ad esempio gli indirizzi 0.0.0.0, 255.255.255.255, 192.0.34.166 e la classe 192.168.0.1/16) e perchè certe classi non vengono sfruttate interamente per via della suddivisione interna in classi più piccole. In ogni caso, con l'esplosione della popolarità di Internet, questo numero non sarà sufficiente ancora per molto a contenere tutte le macchine collegate alla Grande Rete: è anche per questo motivo che è stato progettato IPv6.
Gli indirizzi IP sono univoci a livello mondiale, e vengono assegnati in modo centralizzato da una gerarchia di enti appositi. Sono considerati una risorsa preziosa da gestire con cura. Per rafforzare questo concetto, si parla di "indirizzi IP pubblici".
Indirizzi IP "Privati"
Onde permettere la creazione di reti che utilizzassero il protocollo IP senza per forza dover essere direttamente connesse ad internet, sono state riservate alcune classi di indirizzi IP come indirizzi privati.
Questi indirizzi non possono essere utilizzati su internet, ma chiunque è libero di utilizzarli per una rete privata, che sia domestica o di una grande azienda.
Un computer che utilizzi uno di questi indirizzi non potrà collegarsi direttamente ad un computer su un indirizzo pubblico, ma esistono dei meccanismi per permettergli di fruire di un limitato accesso ad internet:
- il NAT viene spesso usato per far "uscire" una rete privata su internet attraverso un solo indririzzo pubblico. Questa tecnica è detta anche IP masquerading.
- un proxy può essere collegato sia alla rete pubblica che ad una rete privata, permettendo ad esempio di navigare il web dalla rete privata.
Le classi riservate agli indirizzi IP privati sono:
- 10.0.0.0/8 con i primi 8 bit fissi e gli altri assegnabili, può contenere 16.777.216 calcolatori
- 172.16.0.0/12 con i primi 12 bit fissi e gli altri assegnabili, può contenere 1.048.576 calcolatori
- 192.168.0.0/16 con i primi 16 bit fissi e gli altri assegnabili, può contenere 65.536 calcolatori
IPv6
L'indirizzo IPv6 è costituiti a 128 bit; viene descritto da 8 numeri esadecimali rappresentati su 8 byte (quindi ogni numero varia tra 0 e 65535) separati dal simbolo "due punti". Un esempio di indirizzo IPv6 è 2001:0DB8:0000:0000:0000:0000:0000:0001, che può essere abbreviato in 2001:DB8::1 (i due punti doppi stanno a sostituire la parte dell'indirizzo che è composta di soli zeri consecutivi. Si può usare una sola volta, per cui se un indirizzo ha due parti composte di zeri la più breve andrà scritta per esteso).
Il numero di indirizzi univoci disponibili in IPv6 è , ma anche di questi ve ne sono alcuni riservati.
Range di IP
Per indicare i range (gruppi) di IP si usa la notazione indirizzo_IP / bit_fissi; la notazione 192.0.34.166/8 significa che dell'indirizzo IP 192.0.34.166 vanno tenuti fissi solo i primi 8 bit (quindi il primo byte, in questo caso il numero 192) mentre gli altri variano: in pratica, indica la rete di classe A che inizia con 192. 192.0.34.166/16 indica la rete di classe B che inizia con 192.0; allo stesso modo, 2001:DB8::/32 indica il gruppo di indirizzi IPv6 che iniziano con 2001:0DB8.