Passa al contenuto principale

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

  1. L'applicazione invia dati

    • L'applicazione A prepara i dati da inviare
    • Passa i dati a TCP o UDP
  2. Elaborazione TCP/UDP

    • Aggiunge intestazione del livello di trasporto
    • Passa il segmento/datagramma a IP
  3. Modulo IP (Host sorgente)

    • Aggiunge intestazione IP con indirizzi
    • Determina l'instradamento (diretto o via gateway)
    • Frammenta se necessario
    • Passa alla rete locale
  4. Trasmissione sulla rete locale

    • Incapsula in frame di rete
    • Trasmette al prossimo hop
  5. 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
  6. Modulo IP (Host di destinazione)

    • Riceve il datagramma IP
    • Verifica se la destinazione corrisponde
    • Riassembla se frammentato
    • Passa al protocollo di livello superiore
  7. Elaborazione TCP/UDP

    • Elabora l'intestazione di trasporto
    • Consegna i dati all'applicazione
  8. 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

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.