Vai al contenuto

Internet: architettura e protocolli/Protocollo IPv4

Wikibooks, manuali e libri di testo liberi.
Indice del libro

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.
Classi di indirizzi IP

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.

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.

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.

Esempio di routing table

Più address range con uguali bit alti si posso aggregare, mettendo degli zeri al posto dei bit che differiscono:

A sinistra la routing table non aggregata, a destra la routing table aggregata:
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.