Il protocollo IP



IP (Internet Protocol) offre al livello trasporto (TCP/UDP) un servizio non connesso.
IP è stato introdotto per la prima volta nel 1981 e la sua funzione principale è instradare i segmenti TCP/UDP sulla rete cercando se possibile di farli arrivare al nodo di destinazione.
IP è un protocollo senza connessione e come tale non garantisce la nè la consegna dei pacchetti nè che l'ordine di partenza sia rispettato all' arrivo. 
La trasmissione di un pacchetto IP assomiglia all'invio di un telegramma: il servizio postale cerca di farlo arrivare a destinazione possibilmente il più presto èpossibile ma non ci comunica l'esito dell'operazione. Per questo motivo i pacchetti IP vengono chiamati " IP datagram".

Un'importante operazione di IP è la frammentazione dei pacchetti provenienti dal livello superiore. Il pacchetto viene diviso in unità più piccole solo se la sua dimensione supera la MTU (Maximum Tranfer Unit) della rete sottostante. 
In ricezione poi IP effettua il riassemblamento delle unità in un unico pacchetto.

Il pacchetto IP comprende al solito un campo header e un campo dati contenente la  busta di livello superiore.

In figura sono rappresentati i campi dell'header

Il pacchetto IP

Version

IHL

        Type of Service

Total length

Identification

Flags

Fragment Offset

Time to live

Protocol

Header Checksum

Source Address

Destination Address

Options 

Data (variable)

 

 

Indirizzi IP

L'indirizzo IP identifica l'interfaccia attraverso cui un nodo è connesso alla rete. Se il nodo dispone di più interfacce, per es. nel caso dui un router o di una stazione multi-homed, esso avrà più indirizzi IP, uno per ogni interfaccia

L'indirizzo IP  è strutturato in due campi

NETWORK ID

HOST ID

 

Gli indirizzi IP sono stati  suddivisi in 4 classi, per ciascuna delle quali vengono assegnati ai due campi NETWORK ID e HOST lunghezze diverse:

CLASSE A:

0

7 bit

24 bit

CLASSE B

10

14 bit

16 bit

CLASSE C:

110

21 bit

8 bit

CLASSE D:

1110

Multicast Address, 28 bit

 

Ogni classe è individuata dal valore del primo ottetto:

Intervalli per il primo ottetto

CLASSE A 1 - 126
CLASSE B 128 - 191
CLASSE C 192 - 223
CLASSE D 224 - 239

 

Il campo NETWORK ID è soggetto alle seguenti limitazioni:  

Anche il campo HOST ID è soggetto a limitazioni analoghe:

 

Queste regole portano ai seguenti intervalli per gli indirizzi IP 

Intervalli indirizzi IP

classe

da: a:
CLASSE A w.0.0.1 w.255.255.254
CLASSE B w.x.0.1 w.x.255.254
CLASSE C w.x.y.1 w.x.y.254

 

 

Subnetting

Una rete può essere partizionata in più sottoreti, chiamate subnet, inerconnesse fra di loro tramite router.

Questo tipo ripartizione, può essere utile  per vari motivi come gestire in modo più razionale degli indirizzi IP,  garantire una maggior sicurezza, evitare i broadcast etc..

In una rete ripartita in subnet ogni sottorete ha un proprio indirizzo composto dal NETWORK ID e da una parte del campo HOST ID.

Se n è il numero di bit prelevati dal campo host, il numero di sottoreti che si possono creare sarà uguale a 

                                            

non essendo ammessa nè la combinazione 00 nè la 11. 

Per esempio se dobbiamo suddividere la rete di indirizzo IP 192.168.12.0 in due subnet, riserviamo i due bit più significativi del campo HOST ID

24 bit

2 bit

6 bit

 

e assegnamo alle subnet ID gli indirizzi come in tabella

Subnet ID (binario) 

  Subnet ID Decimale

Subnet

11000000.10101000.00001100.01000000 192.168.12.64

Subnet 1

11000000.10101000.00001100.10000000

192.168.12.128

Subnet 2

Il calcolo degli host sulla subnet si effettua sui bit rimanenti applicando la stessa formuletta scritta sopra. Nel  nostro caso sono rimasti 6 bit, quindi 64 combinazioni. Sottraendo 2 otteniamo 62 host per subnet.

Gli indirizzi sono riportati nella tabella

Subnet

minimo

massimo

Subnet 1 192.168.12.65 192.168.12.126
Subnet 2 192.168.12.128 122.168.12.190

 

La subnet mask

La subnet mask o netmask è una maschera a 32 bit che ogni host o router utilizza per determinare se un indirizzo IP appartiene ad una rete o sottorete.

La subnet mask è composta da una sequenza di 1 lunga quanto il campo NETWORK ID + l'eventuale Subnet ID. Il resto dei bit è posto a 0.

Il procedimento adottato consiste nell'effettuare un AND bit a bit fra l'indirizzo IP e la maschera.

Per esempio la subnet mask della rete 192.168.12.0 non partizionata è

subnet mask = 11111111.11111111.11111111.00000000

in decimale 255.255.255.0

Se la rete è partizionata come sopra, avremo

subnet mask = 11111111.11111111.11111111.11000000

in decimale  255.255.255.192

 

Supernetting

L' enorme crescita di Internet (con l'esaurirsi degli indirizzi di classe B) e la rapida crescita delle reti aziendali hanno reso poco flessibile e inadeguata la tecnica di subnetting descritta sopra. Per esempio se un'azienda volesse suddividere la propria rete di 2000 host, in 8 subnet ciascuna con 250 host, sarebbe nell'impossibilità di farlo con un indirizzo di classe C.  L'unica alternativa sarebbe chiedere 8 indirizzi di classe C.  Questo però condurrebbe ad un sovraccaricamento dei routers i quali devono inserire nelle loro tabelle di istradamento invece di un solo indirizzo (per es di classe B), 8 indirizzi di classe C.

Per risolvere il problema si assegna un blocco di indirizzi "consecutivi"  chiamato CIDR  (Classless Interdomain Routing) block, in cui la parte costante non è più vincolata alla classe di appartenenza. 

Per esempio nel caso di 2000 host, supponiamo che venga rilasciato un intervallo di 8 indirizzi di classe C per un totale di 8x254=2032 hosts, compreso fra 220.78.168.0 e 220.78.175.0. Se convertiamo in binario avremo:

220.78.168.0 = 11011100 01001110 10101000 00000000

220.78.175,0 = 11011100 01001110 10101111 00000000

La parte sottolineata, che come si vede rimane costante,  costituisce il NETWORK ID dell’intera rete, mentre i tre bit del terzo ottetto variano dando in successione gli otto indirizzi del blocco.

A questo punto sarà sufficiente per il router (che naturalmente deve supportare il CIDR) creare una sola entry (CIDR entry) nella sua tabella di routing con il primo indirizzo del blocco e una netmask a 21 bit uguale a 1111111111111111 11111000 00000000