2. Panoramica
2.1. Relazione con altri protocolli
Il protocollo internet si interfaccia da un lato con i protocolli host-to-host di livello superiore e dall'altro lato con il protocollo di rete locale. In questo contesto, una "rete locale" può (may) essere una piccola rete in un edificio o una grande rete come ARPANET.
Stack di protocolli
+-------------+
|| Applicazione|
+-------------+
|| TCP | TCP/UDP/ICMP
+-------------+
|| IP | Protocollo Internet (questo documento)
+-------------+
|| Rete locale | Ethernet, WiFi, ecc.
+-------------+
Diagramma delle relazioni
+------+ +-----+ +-----+ +-----+
||Telnet| | FTP | | ... | |Voice|
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | UDP | | ... |
+-----+ +-----+ +-----+
| | |
+-------------------------------+
| Protocollo Internet & ICMP |
+-------------------------------+
|
+-------------------------------+
| Protocollo di rete locale |
+-------------------------------+
Protocolli chiave
- TCP (Transmission Control Protocol): Fornisce consegna affidabile, ordinata e verificata dei dati
- UDP (User Datagram Protocol): Fornisce servizio di datagrammi senza connessione
- ICMP (Internet Control Message Protocol): Utilizzato per segnalazione errori e diagnostica
- Protocolli di rete locale: Ethernet, Token Ring, ARPANET, ecc.
2.2. Modello di operazione
Il modello di operazione per trasmettere un datagramma da un programma applicativo a un altro è illustrato dal seguente scenario:
Scenario di trasmissione
Applicazione A (Host 1) → Modulo IP → Gateway → Modulo IP → Applicazione B (Host 2)
Flusso dettagliato
-
L'applicazione invia dati
- L'applicazione A prepara i dati da inviare
- Passa i dati a TCP o UDP
-
Elaborazione TCP/UDP
- Aggiunge intestazione del livello di trasporto
- Passa il segmento/datagramma a IP
-
Modulo IP (Host sorgente)
- Aggiunge intestazione IP con indirizzi
- Determina l'instradamento (diretto o via gateway)
- Frammenta se necessario
- Passa alla rete locale
-
Trasmissione sulla rete locale
- Incapsula in frame di rete
- Trasmette al prossimo hop
-
Elaborazione del gateway (se necessario)
- Riceve il datagramma IP
- Verifica l'indirizzo di destinazione
- Determina il prossimo hop
- Decrementa il TTL
- Può (may) frammentare ulteriormente
- Inoltra alla prossima rete
-
Modulo IP (Host di destinazione)
- Riceve il datagramma IP
- Verifica se la destinazione corrisponde
- Riassembla se frammentato
- Passa al protocollo di livello superiore
-
Elaborazione TCP/UDP
- Elabora l'intestazione di trasporto
- Consegna i dati all'applicazione
-
L'applicazione riceve i dati
- L'applicazione B riceve i dati
Esempio di viaggio del datagramma
Host A Gateway 1 Gateway 2 Host B
| | | |
| 1. Invia datagramma | | |
|------------------->| | |
| | 2. Instrada & inoltra | |
| |------------------->| |
| | | 3. Instrada & inoltra |
| | |------------------->|
| | | | 4. Consegna
| | | |
2.3. Descrizione delle funzioni
Lo scopo del protocollo internet è spostare i datagrammi attraverso un insieme interconnesso di reti. Questo viene fatto passando i datagrammi da un modulo internet a un altro fino al raggiungimento della destinazione.
Funzioni principali
1. Indirizzamento (Addressing)
- Ogni datagramma contiene indirizzi sorgente e destinazione
- Gli indirizzi a 32 bit identificano univocamente gli host
- Le porzioni rete e host consentono l'instradamento gerarchico
2. Instradamento (Routing)
- Selezione del percorso attraverso reti interconnesse
- Basato sull'indirizzo di destinazione e sulle tabelle di instradamento
- Può (can) essere consegna diretta o indiretta tramite gateway
3. Frammentazione e riassemblaggio (Fragmentation and Reassembly)
- I datagrammi grandi vengono divisi in frammenti più piccoli
- Necessario quando varia la MTU (Maximum Transmission Unit)
- I frammenti vengono riassemblati solo alla destinazione finale
4. Tipo di servizio (Type of Service)
- Indica la qualità del servizio desiderata
- Parametri: precedenza (precedence), ritardo (delay), throughput, affidabilità (reliability)
- Utilizzato dai gateway per le decisioni di instradamento
5. Tempo di vita (Time to Live)
- Limita la durata di vita del datagramma nell'internet
- Previene loop infiniti
- Viene decrementato ad ogni hop
6. Opzioni
- Parametri di sicurezza
- Instradamento sorgente (Source Routing)
- Registrazione del percorso (Route Recording)
- Timestamp
7. Checksum dell'intestazione (Header Checksum)
- Protegge l'integrità dell'intestazione
- Viene ricalcolato ad ogni hop (a causa delle modifiche del TTL)
- Non protegge il carico utile dei dati
Responsabilità del modulo internet
I moduli internet (specialmente nei gateway) determinano che i datagrammi siano formattati correttamente, abbiano indirizzi validi e siano instradati verso le loro destinazioni. Le responsabilità principali includono:
- Rilevamento errori (Error Detection): Validare il checksum dell'intestazione
- Gestione TTL: Decrementare e verificare il TTL
- Frammentazione: Dividere i datagrammi quando necessario
- Riassemblaggio (Reassembly): Ricostruire il datagramma originale alla destinazione
- Elaborazione opzioni: Gestire le opzioni IP
- Generazione ICMP: Segnalare errori tramite ICMP
Schema di indirizzamento
Classe A: 0NNNNNNN.HHHHHHHH.HHHHHHHH.HHHHHHHH
- 0.0.0.0 a 127.255.255.255
- 128 reti, 16.777.216 host ciascuna
Classe B: 10NNNNNN.NNNNNNNN.HHHHHHHH.HHHHHHHH
- 128.0.0.0 a 191.255.255.255
- 16.384 reti, 65.536 host ciascuna
Classe C: 110NNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH
- 192.0.0.0 a 223.255.255.255
- 2.097.152 reti, 256 host ciascuna
Classe D: 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX
- 224.0.0.0 a 239.255.255.255
- Multicast
Classe E: 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX
- 240.0.0.0 a 255.255.255.255
- Riservato per uso futuro
2.4. Gateway
I gateway implementano il protocollo internet per inoltrare i datagrammi tra le reti. Un gateway è collegato a due o più reti e riceve datagrammi da una rete e li inoltra a un'altra rete.
Funzioni del gateway
1. Instradamento (Routing)
- Mantenere le tabelle di instradamento
- Determinare il prossimo hop per ogni datagramma
- Può (may) utilizzare protocolli di instradamento (RIP, OSPF, ecc.)
2. Frammentazione
- Può (may) dover frammentare i datagrammi
- Si verifica quando la prossima rete ha un MTU più piccolo
- NON riassembla (solo la destinazione lo fa)
3. Gestione TTL
- Decrementare il TTL di almeno 1
- Scartare il datagramma se il TTL raggiunge 0
- Inviare messaggio ICMP Time Exceeded alla sorgente
4. Gestione errori (Error Handling)
- Rilevare varie condizioni di errore
- Generare messaggi di errore ICMP
- Inoltrare gli errori alla sorgente
5. Elaborazione opzioni (Option Processing)
- Elaborare le opzioni IP
- Aggiungere timestamp se richiesto
- Gestire l'instradamento sorgente
Architettura del gateway
Rete A Gateway Rete B
+---------+ +----------+ +---------+
|| | | | | |
|| Host A |---------| Router |---------| Host B |
|| | | | | |
+---------+ +----------+ +---------+
| | |
| | |
Modulo IP Modulo IP Modulo IP
Rete locale A Entrambe reti Rete locale B
Passi di elaborazione del gateway
1. Ricevere datagramma dall'interfaccia di rete
2. Verificare il checksum dell'intestazione
3. Verificare se la destinazione è locale
- Sì: Consegnare all'host
- No: Procedere con l'inoltro
4. Decrementare il TTL
- Se TTL = 0: Scartare, inviare ICMP
5. Consultare la tabella di instradamento per il prossimo hop
6. Verificare se è necessaria la frammentazione
- Se il flag DF è impostato e la frammentazione è necessaria:
Scartare, inviare ICMP
- Altrimenti: Frammentare se necessario
7. Ricalcolare il checksum dell'intestazione
8. Inoltrare alla prossima interfaccia di rete
Esempio di tabella di instradamento
|| Rete di destinazione | Prossimo hop | Interfaccia | Metrica | ||----------------------|--------------|-------------|---------| || 10.0.0.0/8 | Diretto | eth0 | 0 | || 192.168.1.0/24 | Diretto | eth1 | 0 | || 0.0.0.0/0 | 10.0.0.1 | eth0 | 10 |
Responsabilità del gateway
- NON deve (must not) riassemblare i frammenti (solo la destinazione finale lo fa)
- Deve (must) frammentare se necessario
- Deve (must) decrementare il TTL
- Deve (must) ricalcolare il checksum dell'intestazione dopo qualsiasi modifica
- Dovrebbe (should) implementare ICMP per la segnalazione degli errori
- Può (may) utilizzare il Tipo di servizio per le decisioni di instradamento
Riepilogo
Il Protocollo Internet fornisce un servizio di consegna datagrammi senza connessione al meglio dello sforzo (best-effort). Opera tra i protocolli host-to-host di livello superiore (come TCP) e i protocolli di rete sottostanti. Le caratteristiche principali includono:
- Indirizzamento universale attraverso reti interconnesse
- Instradamento attraverso i gateway
- Frammentazione per diversi MTU di rete
- Operazione semplice e senza stato
- Nessuna garanzia di affidabilità (gestita dai livelli superiori)
Questa progettazione consente all'Internet di essere scalabile, flessibile e robusto, supportando diverse reti e applicazioni.