5.6) Il livello network in Internet |
Internet è una collezione di AS connessi gli uni con gli altri. Non esiste una struttura rigida, ma comunque si possono distinguere alcune componenti:
Ciò che tiene tutto insieme è il protocollo di livello
network dell'architettura TCP/IP, e cioè IP
(Internet Protocol, RFC
791).
IP è un protocollo datagram, quindi non connesso e non affidabile, che opera come segue:
5.6.1) Lo header IP (versione 4) |
Un pacchetto IP è costituito da un
header e da una parte
dati.
L'header ha una parte fissa di 20 byte e una parte, opzionale,
di lunghezza variabile.
I campi dell'header hanno le seguenti funzioni:
Version | il numero di versione del protocollo (oggi è 4). |
IHL | lunghezza dell'header in parole di 32 bit (minimo 5, massimo 15). |
Type of service | caratterizza affidabilità e velocità richieste. E' di fatto ignorato dai router. |
Total length | lunghezza del pacchetto (inclusi dati), massimo 65.535 byte. |
Identification | tutti i frammenti di uno stesso pacchetto hanno lo stesso valore. |
DF | don't fragment (se uguale a 1, non si deve frammentare il pacchetto a costo di scegliere una strada meno veloce). |
MF | more fragments (se uguale a 1, il pacchetto non è ancora finito). |
Fragment offset | indice del frammento nel pacchetto. |
Time to live | contatore (inizializzato a 255) che viene decrementato di uno a ogni hop (o ad ogni secondo). Quando arriva a zero, il pacchetto viene scartato. |
Protocol | codice del protocollo di livello transport a cui consegnare i dati (i codici sono definiti in RFC 1700). |
Header checksum | checksum di controllo del solo header:
|
Source e destination address | indirizzi di mittente e destinatario. |
Options | opzioni, solo cinque sono definite oggi:
|
5.6.2) Indirizzi IP |
Un indirizzo IP è formato da 32 bit e codifica due cose:
La combinazione è unica: non possono esistere nell'intera
rete Internet due indirizzi IP uguali.
Si noti che solitamente si ritiene che ogni host sulla rete abbia un singolo indirizzo IP. In realtà gli indirizzi sono assegnati alle interfacce di rete, quindi:
Gli indirizzi IP sono assegnati da autorità nazionali (NIC,
Network Information Center)
coordinate a livello mondiale.
I formati possibili degli indirizzi sono i seguenti:
Inoltre, esistono alcuni indirizzi con un significato speciale:
Quando si utilizza il loopback,
il pacchetto non viene inviato sulla rete ma viene elaborato come
se fosse in arrivo: questo è molto utile, ad esempio, per
effettuare localmente dei test su un software di rete in fase
di sviluppo.
Ricapitolando, poiché alcune configurazioni binarie per gli indirizzi sono impegnate per gli indirizzi speciali, possono esistere:
Gli indirizzi sono usualmente espressi nella dotted
decimal notation, cioè i valori dei singoli
byte sono espressi in decimale e sono separati da un punto, come
nell'indirizzo:
141.192.140.37
In tale notazione, è possibile rappresentare separatamente il network number e l'host number. Per distinguerli, il primo è seguito da un punto. Ad esempio, nel caso dell'indirizzo IP precedente (che è relativo ad una network di tipo B), si ha:
141.192.
(notare il
punto finale);
140.37
(non c'è
il punto finale).
5.6.3) Routing IP |
Il collegamento fra due router non avviene
direttamente, ma attraverso una network (in realtà di solito
una subnet, come vedremo
poi) che li collega, e che di fatto è costituita dalle
due interfacce di rete e dalla linea di comunicazione che le collega:
Ogni router possiede una tabella (costruita e mantenuta dinamicamente dall'algoritmo di routing in esercizio) che contiene elementi del tipo:
Associate a tali elementi ci sono le informazioni sull'interfaccia
di rete da usare per instradare il pacchetto e, nel caso delle
linee punto punto, l'indirizzo del router che si trova dall'altra
parte.
Inoltre, viene mantenuto l'indirizzo di un default
router (e la corrispondente linea seriale da usare
per raggiungerlo) a cui inviare tutti i pacchetti destinati a
network sconosciute.
Nell'esempio della figura precedente, il router X si comporta come segue:
150.1.10.1
il router, attraverso un elemento di tipo 1, scopre che deve inviarlo
sulla LAN;
150.2.10.3
e il router ha un elemento di tipo 2 quale (150.2., 0), allora
invia il pacchetto (al router Y) sulla linea 1.
5.6.4) Subnet |
Al fine di economizzare nel numero di network
da usare (utilizzando al meglio quelle che possono contenere migliaia
o milioni di host) una network può essere divisa in varie
subnet, ciascuna contenente
i suoi host.
Questo è un fatto privato della network che viene suddivisa,
e non ha bisogno di essere comunicato all'esterno.
Il meccanismo usato è di considerare, nell'indirizzo IP
originario, l'host number come una coppia di valori: un subnet
number e l'host number. Ciò avviene sulla
base di una maschera di bit, detta subnet
mask, che deve essere unica per tutta la network
e che delimita la parte di host number che viene usata come subnet
number.
Ad esempio, per una rete di classe A si potrà avere:
A seconda dell'ampiezza del campo dedicato alla subnet, si possono
ottenere molte subnet contenenti ciascuna pochi host oppure poche
subnet che però potranno contenere molti host.
Nei router si aggiungono elementi del tipo:
con le relative informazioni sulle interfacce di rete da usare.
La rete di figura 5-12, che nella sua formulazione originaria impegnava ben tre network di classe B, può essere realizzata con un sola network di classe B suddivisa in tre subnet. A tal fine, usiamo un network number uguale a 150.1. ed una subnet mask (espressa in dotted decimal notation) uguale a 255.255.255.0, cioé:
Il risultato è il seguente:
5.6.5) Protocolli di controllo |
Assieme a IP esistono diversi protocolli per
il controllo del funzionamento della subnet.
ICMP (Internet Control Message Protocol, RFC 792)
L'operatività della subnet è controllata continuamente
dai router, che si scambiano informazioni mediante messaggi conformi
al protocollo ICMP (tali
messaggi viaggiano dentro pacchetti IP).
Esistono molti tipi di messaggi, fra i quali:
ARP (Address Resolution Protocol, RFC 826)
Il protocollo ARP serve
per derivare, dall'indirizzo IP dell'host di destinazione, l'indirizzo
di livello data link necessario per inviare il frame che incapsulerà
il pacchetto destinato all'host di cui all'indirizzo IP.
Esso opera appoggiandosi direttamente sul livello data link e non su IP:
Se l'indirizzo IP è relativo ad un'altra network:
RARP (Reverse Address Resolution Protocol, RFC 903)
Il protocollo RARP risolve
il problema inverso, cioè consente di trovare quale indirizzo
IP corrisponda a un determinato indirizzo data link.
Esso è utile nel caso di stazioni senza disco, che al momento
dell'avvio caricano l'immagine del codice binario del sistema
operativo da un server.
Il vantaggio che si ottiene è che una sola immagine binaria
va bene per tutte le stazioni: ogni stazione personalizza poi
l'immagine binaria con la determinazione del proprio indirizzo
IP mediante una richiesta RARP, nella quale invia il proprio indirizzo
data link (che è cablato nell'interfaccia di rete).
5.6.6) Protocolli di routing |
Come già detto, Internet è una
collezione di AS connessi da backbone ad alta velocità.
Ciò che caratterizza un AS è il fatto di essere
gestito da una singola autorità.
Esempi tipici di AS sono:
Il routing complessivo è organizzato in modo gerarchico:
Interior Gateway Protocol per Internet
Il protocollo originario era il RIP
(Routing Information Protocol,
RFC 1058) di tipo distance vector, ormai sostituito da OSPF
(Open Shortest Path First,
RFC 1247), che è di tipo link state.
OSPF consente fra l'altro un routing gerarchico all'interno dell'AS, che viene suddivisa in diverse aree:
I router di un AS possono essere:
Exterior Gateway Protocol per Internet
Il protocollo EGP, usato dai router sul confine dell'AS e da quelli
sui backbone ad alta velocità che connettono gli AS, si
chiama BGP (Border
Gateway Protocol, RFC 1654).
E' fondamentalmente di tipo distance vector, con due novità:
5.6.7) IP versione 6 |
Dopo un lungo lavoro, IETF ha approvato il
successore di IP versione 4, cioè la versione 6 (IPv6,
RFC 1883, 1884, 1885, 1886, 1887).
I requisiti principali di progetto erano:
Le principali differenze rispetto alla versione 4 sono: