Internet: architettura e protocolli/Protocollo IPv4
L'IP è il livello di rete di TCP/IP:
- è un servizio non connesso: non c'è segnalazione di rete o utente;
- è un protocollo di tipo datagram: basato su pacchetti.
- Funzionalità
- frammentazione e riassemblaggio dei pacchetti per il trasporto sul livello 2;
- gestione di indirizzi a 32 bit (IPv4);
- configurazione delle classi di servizio: i progettisti di IP avevano previsto una differenziazione del traffico per priorità, ma oggi le classi di servizio non sono sfruttate.
Gli apparati di interconnessione di livello 3 sono chiamati router:
- a differenza degli switch evitano l'intasamento della forwarding table;
- effettuano solo la frammentazione, mentre il riassemblaggio è delegato alla destinazione:
Pacchetti IP
[modifica | modifica sorgente]Intestazione
[modifica | modifica sorgente]Il formato dell'intestazione di un pacchetto IP è composto da vari campi:
- versione: IPv4 o IPv6;
- tipo di servizio (ToS): per le classi di servizio;
- lunghezza totale del pacchetto prima della deframmentazione;
- identificatore: tutti i frammenti di uno stesso pacchetto condividono lo stesso identificatore;
- flag: indica se il pacchetto corrente è l'ultimo frammento;
- offset di frammento: per l'ordinamento del pacchetto nella sequenza;
- tempo di vita (TTL): è un contatore di hop, cioè è un numero che viene decrementato di un'unità a ogni passaggio dentro un router → quando arriva a 0 il pacchetto viene scartato per evitare che pacchetti vaghino all'infinito;
- protocollo: identifica il protocollo di livello 4 del pacchetto payload (TCP, UDP, ICMP...);
- checksum: protegge solo l'intestazione;
- indirizzi IP della sorgente e della destinazione;
- alcune opzioni oggi abbandonate.
Indirizzi
[modifica | modifica sorgente]Ogni indirizzo IP è ampio 4 byte:
- campo rete: interfacce vicine sono aggregate in un prefisso di rete comune che occupa i bit alti;
- campo host: identifica la macchina specifica.
Un indirizzo IP è umanamente rappresentabile suddividendo i 32 bit in gruppi da 8, convertendo ogni gruppo in decimale e separandoli con dei puntini → ogni numero è compreso tra 0 e 255.
Non tutti gli indirizzi possibili sono utilizzabili:
- indirizzi con tutti 0 nel campo host identificano l'intera rete e non possono essere utilizzati per un singolo host;
- indirizzi con tutti 1 nel campo host identificano il broadcast di tipo directed a tutti gli host nella rete;
- indirizzi con tutti 1 identificano il broadcast di tipo limited a tutti gli host della rete locale;
- indirizzi che iniziano con 127 identificano la macchina stessa e bloccano il forwarding di traffico (loopback);
- indirizzi privati: gli indirizzi pubblici devono essere univoci in tutta Internet, gli indirizzi privati sono gestiti all'interno della rete privata che dall'esterno viene vista con un unico indirizzo IP (NAT):
- 1 rete privata di classe C, 224 indirizzi: tra 10.0.0.0 e 10.255.255.255;
- 15 reti private di classe B, 16 indirizzi: da 172.16.0.0 a 172.31.255.255;
- 256 reti private di classe C, 256 indirizzi: da 192.168.0.0 a 192.168.255.255.
Gli indirizzi IP sono assegnati alle interfacce → un router non ha un unico indirizzo, ma ne ha uno per ogni interfaccia.
Reti fisiche e reti logiche
[modifica | modifica sorgente]Una rete fisica è un insieme di host connessi in una rete senza router → il livello fisico non viene interrotto da un dispositivo di livello 3.
Una rete logica (LIS) è un insieme di host con lo stesso prefisso di rete, e include la rete fisica e il router. Ogni rete fisica corrisponde a livello 3 a una rete logica.
La comunicazione tra due macchine appartenenti a una stessa rete fisica è basata sugli indirizzi MAC dei due host (CSMA/CD). In realtà il livello applicazione non sa che l'host di destinazione si trova nella stessa rete fisica, e fornisce l'indirizzo IP → consegna diretta al livello 2: è il livello 3 che deve capire che la destinazione è nella rete fisica e far partire i meccanismi di livello 2 senza passare dal router.
La consegna tra reti logiche differenti è affidata al router (consegna indiretta). Il livello 2 è comunque usato per le consegne dirette tra la sorgente e il router, e tra il router e la destinazione. L'host deve quindi conoscere almeno un default gateway, che è il router per uscire dalla rete logica.
Esiste la possibilità di emulare due reti logiche in una stessa rete fisica: una stessa interfaccia è vista da un host con un certo indirizzo IP e da un altro host con un altro indirizzo IP, e la comunicazione tra i due host passa sempre attraverso il router. In realtà esistono dei meccanismi che permettono di ottimizzare il percorso (routing table, ARP table): dopo la prima comunicazione, il router istruisce il primo host affinché la volta dopo svolga la consegna diretta a livello 2.
Subnetting
[modifica | modifica sorgente]Il subnetting consente partendo da una rete di una certa classe di creare una rete a classe più piccola: il prefisso di rete si espande e una parte del campo host diventa il campo subnet.
La subnet mask è una sequenza di bit:
- i byte 255 identificano il prefisso di rete, compreso il campo subnet;
- i byte 0 identificano il campo host ridotto.
Queste reti a classe più piccola sono delle reti logiche distinte → il subnetting si può usare per emulare più reti logiche in una stessa rete a classe maggiore.
Indirizzamento classless (CIDR)
[modifica | modifica sorgente]La netmask permette di estendere il prefisso di rete a un qualsiasi bit dell'indirizzo:
- i bit 1 identificano il prefisso di rete;
- i bit 0 identificano il campo host.
In questo modo più reti piccole possono venire aggregate in un unico router → si definiscono delle gerarchie di indirizzamento.
Non sono ammesse le netmask 255.255.255.255 (/32) e 255.255.255.254 (/31) perché l'indirizzo con tutti 0 è riservato alla rete stessa, e quello con tutti 1 al traffico broadcast.
Routing
[modifica | modifica sorgente]Dalla netmask il router può capire se la destinazione si trova nella stessa rete del mittente, confrontando i risultati di due operazioni AND bit a bit:
- il primo AND bit a bit è tra l'indirizzo del mittente e la netmask del mittente;
- il secondo AND bit a bit è tra l'indirizzo del destinatario e la netmask del mittente.
Quando al router arriva un datagramma:
- se la destinazione coincide con il router stesso: elaborazione locale (per configurare il router);
- se la destinazione è in uno degli address range del router: ARP, invio diretto all'indirizzo MAC di destinazione, ecc. (se l'indirizzo di destinazione appartiene a più address range, viene preferito quello con la netmask più lunga (Longest Prefix Matching));
- se la destinazione è fuori da tutti gli address range del router: consulta la routing table, quindi invia il datagramma al "prossimo hop" indicato nella routing table (o sulla default route).
Tabelle di routing
[modifica | modifica sorgente]Una tabella di routing può contenere:
- entry dirette: sono le coppie indirizzo di rete (con 0 finali) + netmask associate a ogni interfaccia del router;
- entry indirette: sono gli indirizzi IP delle interfacce degli altri router (next hop) a cui fare le consegne dirette:
- statiche: sono configurate manualmente dal gestore;
- dinamiche: sono determinate in modo automatico.
Si scelgono sempre le route a minor costo.
Più address range con uguali bit alti si posso aggregare, mettendo degli zeri al posto dei bit che differiscono:
Destinazione | Netmask | Next hop | Destinazione | Netmask | Next hop | |
---|---|---|---|---|---|---|
190.3.1.0 | 255.255.255.0 | 190.3.3.2 | 190.3.1.0 | 255.255.255.0 | 190.3.3.2 | |
190.3.9.0 | 255.255.255.252 | 190.3.3.2 | 190.3.9.0 | 255.255.255.252 | 190.3.3.2 | |
190.3.9.4 | 255.255.255.252 | 190.3.6.8 | 190.3.0.0 | 255.255.0.0 | 190.3.6.8 | |
190.3.4.0 | 255.255.255.0 | 190.3.6.8 | ||||
150.1.0.0 | 255.255.0.0 | 190.3.6.8 | 150.1.0.0 | 255.255.0.0 | 190.3.6.8 |
Il default gateway ha sempre netmask 0.0.0.0, perché viene scelto solo se non ci sono altri address range che risultano validi dai due AND bit a bit.