3. PROTOCOLLI DEL LIVELLO INTERNET (INTERNET LAYER PROTOCOLS)
3.1 INTRODUZIONE (INTRODUCTION)
Il protocollo Internet (Internet Protocol, IP) è il protocollo centrale della suite di protocolli Internet. Tutti i protocolli di trasporto Internet utilizzano IP per trasportare i dati dall'host di origine all'host di destinazione. IP è un servizio di internetwork senza connessione o datagramma, e include disposizioni per l'indirizzamento, la specifica del tipo di servizio, la frammentazione e il riassemblaggio, e le informazioni di sicurezza.
Il livello Internet include anche il protocollo dei messaggi di controllo Internet (Internet Control Message Protocol, ICMP), che fornisce funzioni di controllo e segnalazione, e il protocollo di gestione dei gruppi Internet (Internet Group Management Protocol, IGMP), che viene utilizzato per il multicasting.
Tutti gli host Internet devono implementare IP e ICMP (MUST). Gli host che supportano il multicasting IP devono anche implementare IGMP (MUST).
3.2 PERCORSO DEL PROTOCOLLO (PROTOCOL WALK-THROUGH)
3.2.1 Protocollo Internet -- IP (Internet Protocol)
Il protocollo Internet è definito in RFC 791 [IP:1]. Il formato dell'intestazione IP e la semantica di ciascun campo sono ben definiti e documentati. Tuttavia, ci sono diverse aree che richiedono chiarimenti o specifiche aggiuntive per le implementazioni degli host.
3.2.1.1 Numero di versione (Version Number)
Un host deve rifiutare silenziosamente qualsiasi datagramma IP il cui numero di versione non sia 4 (MUST) (il numero di versione corrente del protocollo Internet).
3.2.1.2 Checksum (Checksum)
Un host deve verificare il checksum dell'intestazione IP su ogni datagramma ricevuto e rifiutare silenziosamente ogni datagramma con un checksum errato (MUST).
3.2.1.3 Indirizzamento (Addressing)
Ogni datagramma IP include un indirizzo IP di origine e un indirizzo IP di destinazione. Un indirizzo IP ha due componenti: un numero di rete e un numero di host.
Il numero di rete identifica una rete fisica a cui l'host è collegato. Il numero di host identifica un particolare host su quella rete.
Un host deve supportare i seguenti indirizzi speciali (MUST):
- Broadcast limitato (Limited Broadcast): 255.255.255.255
- Broadcast diretto (Directed Broadcast): tutti 1 nella parte host
- Questo host su questa rete (This Host on This Network): 0.0.0.0
- Host su questa rete (Host on This Network):
{network, host} - Loopback: 127.x.x.x
3.2.1.4 Frammentazione e riassemblaggio (Fragmentation and Reassembly)
Ogni modulo Internet deve essere in grado di inoltrare un datagramma di 68 byte senza frammentazione (MUST). Un host deve essere in grado di riassemblare datagrammi frammentati di almeno 576 byte (MUST).
3.2.1.5 Identificazione (Identification)
Quando si invia una copia identica di un datagramma, il campo di identificazione IP deve essere lo stesso di quello del datagramma originale (MUST).
Quando un host frammenta un datagramma IP, deve copiare il campo di identificazione dall'intestazione IP originale in tutte le intestazioni dei frammenti (MUST).
3.2.1.6 Tipo di servizio (Type-of-Service)
Il byte del tipo di servizio (Type-of-Service, TOS) nell'intestazione IP viene utilizzato per indicare la qualità del servizio desiderata per un particolare datagramma. Il valore TOS specifica l'importanza relativa di throughput, ritardo, affidabilità e costo.
Un'applicazione deve essere in grado di specificare un valore TOS per i pacchetti che invia (MUST). Il livello IP deve passare il valore TOS invariato al livello di collegamento (MUST).
3.2.1.7 Tempo di vita (Time-to-Live)
Il campo tempo di vita (Time-to-Live, TTL) è definito dal mittente e decrementato da ogni router che inoltra il datagramma. Quando il TTL raggiunge zero, il datagramma viene scartato.
Un host non deve inviare un datagramma con un valore di tempo di vita (TTL) di zero (MUST NOT). Un host non deve rifiutare un datagramma semplicemente perché è stato ricevuto con TTL inferiore a 2 (MUST NOT).
3.2.1.8 Opzioni (Options)
Sono definite diverse opzioni IP:
- Registrazione del percorso (Record Route): Registra il percorso preso da un datagramma
- Timestamp: Registra i timestamp ai router lungo il percorso
- Percorso sorgente (Source Route): Specifica il percorso che un datagramma deve seguire
- Sicurezza (Security): Fornisce restrizioni di sicurezza e gestione
Un host deve essere in grado di agire su tutte le opzioni IP che riceve (MUST). Alcune opzioni richiedono l'elaborazione da parte di ogni host che le riceve; altre richiedono l'elaborazione solo da parte dell'host di destinazione.
3.2.2 Protocollo dei messaggi di controllo Internet -- ICMP (Internet Control Message Protocol)
ICMP [INTERNET:8] viene utilizzato per segnalare errori e altre informazioni sull'elaborazione dei pacchetti IP alla sorgente. I messaggi ICMP vengono inviati nei datagrammi IP.
Ogni host deve implementare ICMP (MUST). Un messaggio di errore ICMP non deve essere inviato (MUST NOT) come risultato della ricezione di:
- Un messaggio di errore ICMP
- Un datagramma destinato a un indirizzo di broadcast IP o multicast IP
- Un datagramma inviato come broadcast del livello di collegamento
- Un frammento non iniziale
- Un datagramma il cui indirizzo di origine non è valido
3.2.2.1 Destinazione irraggiungibile (Destination Unreachable)
Il messaggio Destination Unreachable viene inviato quando un datagramma non può essere consegnato alla sua destinazione per motivi diversi dalla congestione.
Un host dovrebbe generare messaggi Destination Unreachable con i seguenti codici (SHOULD):
- 2 (Protocol Unreachable): Inviato quando il protocollo di trasporto designato in un datagramma non è supportato
- 3 (Port Unreachable): Inviato quando il protocollo di trasporto di destinazione non è in grado di demultiplexare il datagramma
3.2.2.2 Reindirizzamento (Redirect)
Un messaggio Redirect viene inviato da un router a un host per informarlo di un percorso migliore verso una particolare destinazione.
Un host deve essere in grado di agire sui messaggi Redirect (MUST). Un host deve aggiornare la sua tabella di routing quando riceve un Redirect (MUST).
3.2.2.3 Source Quench
Source Quench è un meccanismo di controllo della congestione. Quando un host o un router deve scartare un datagramma a causa di un overflow del buffer, può inviare un messaggio Source Quench alla sorgente (MAY).
Un host che riceve un messaggio Source Quench deve ridurre la velocità con cui invia datagrammi alla destinazione specificata (MUST).
3.2.2.4 Tempo superato (Time Exceeded)
Un messaggio Time Exceeded viene inviato da un router quando un datagramma viene scartato perché il suo campo Time-to-Live ha raggiunto zero.
Un messaggio Time Exceeded viene anche inviato da un host di destinazione quando il riassemblaggio dei frammenti non può essere completato entro un timeout.
3.2.2.5 Problema di parametro (Parameter Problem)
Un messaggio Parameter Problem indica che è stato rilevato un problema durante l'elaborazione di un parametro dell'intestazione IP e il datagramma è stato scartato.
3.2.2.6 Richiesta/Risposta Echo (Echo Request/Reply)
Ogni host deve implementare una funzione server ICMP Echo che riceve richieste Echo e invia risposte Echo corrispondenti (MUST).
Una richiesta ICMP Echo destinata a un indirizzo di broadcast IP o multicast IP può essere rifiutata silenziosamente (MAY).
3.2.2.7 Richiesta/Risposta informazioni (Information Request/Reply)
I messaggi Information Request e Reply sono obsoleti e non dovrebbero essere implementati (SHOULD NOT).
3.2.2.8 Timestamp e risposta timestamp (Timestamp and Timestamp Reply)
I messaggi Timestamp e Timestamp Reply vengono utilizzati per misurare i tempi di andata e ritorno e sincronizzare gli orologi.
Un host può implementare ICMP Timestamp (MAY). Se lo fa, deve seguire il formato specificato per i timestamp (MUST).
3.2.2.9 Richiesta/Risposta maschera di indirizzo (Address Mask Request/Reply)
I messaggi Address Mask Request e Reply consentono a un host di ottenere la maschera di sottorete per una rete locale.
Un host deve supportare i messaggi ICMP della maschera di sottorete se supporta il subnetting (MUST). Se lo fa, deve rispondere alle richieste Address Mask (MUST) e dovrebbe avere un'opzione di configurazione per inviare richieste Address Mask durante l'avvio (SHOULD).
3.2.3 Protocollo di gestione dei gruppi Internet -- IGMP (Internet Group Management Protocol)
IGMP [INTERNET:4] viene utilizzato dagli host e dai router adiacenti per stabilire le appartenenze ai gruppi multicast.
Un host deve implementare IGMP se supporta il multicasting IP (MUST). La conformità di livello 2 (implementazione IGMP completa) è richiesta (REQUIRED).
3.3 PROBLEMI SPECIFICI (SPECIFIC ISSUES)
3.3.1 Routing dei datagrammi in uscita (Routing Outbound Datagrams)
Per decidere se una destinazione è locale o remota, un host IP verifica se l'indirizzo di destinazione ha lo stesso prefisso di rete di uno degli indirizzi IP propri dell'host.
3.3.2 Riassemblaggio (Reassembly)
La funzione di riassemblaggio IP deve conformarsi ai seguenti requisiti (MUST):
- Un host deve essere in grado di riassemblare datagrammi frammentati di almeno 576 byte (MUST)
- Il timeout di riassemblaggio deve essere di almeno 60 secondi ma non deve superare i 120 secondi (MUST)
3.3.3 Frammentazione (Fragmentation)
Un host deve supportare la frammentazione IP locale (MUST). Quando si frammenta un datagramma, un host deve copiare determinati campi dell'intestazione IP in ciascuna intestazione di frammento (MUST).
3.3.4 Multihoming locale (Local Multihoming)
Un host multihomed ha più indirizzi IP, che possono trovarsi sulle stesse reti o su reti diverse. Un host con più indirizzi IP deve essere in grado di inviare e ricevere datagrammi utilizzando uno qualsiasi dei suoi indirizzi IP (MUST).
3.3.5 Inoltro del percorso sorgente (Source Route Forwarding)
Un host deve supportare l'origine e l'elaborazione dei percorsi sorgente (MUST).
3.3.6 Broadcast
Un host deve supportare la ricezione e l'elaborazione dei datagrammi broadcast (MUST). Quando un host riceve un datagramma broadcast, deve passare una copia a ciascun protocollo di trasporto (MUST).
3.3.7 Multicasting IP (IP Multicasting)
Un host dovrebbe supportare il multicasting IP (SHOULD). Gli host che supportano il multicasting IP devono conformarsi ai requisiti in [INTERNET:4] (MUST).
3.3.8 Segnalazione errori (Error Reporting)
Gli errori del livello IP dovrebbero essere segnalati al livello di trasporto o all'applicazione secondo il caso (SHOULD).
3.4 INTERFACCIA LIVELLO INTERNET/LIVELLO DI TRASPORTO (INTERNET/TRANSPORT LAYER INTERFACE)
Il livello Internet fornisce servizi ai protocolli del livello di trasporto (TCP e UDP). L'interfaccia include le seguenti operazioni:
- Invio (Send): Accettare un pacchetto dal livello di trasporto e inviarlo
- Ricezione (Receive): Accettare un pacchetto in arrivo e consegnarlo al livello di trasporto
- Segnalazione errore (Report Error): Segnalare un errore al livello di trasporto
3.5 RIEPILOGO DEI REQUISITI DEL LIVELLO INTERNET (INTERNET LAYER REQUIREMENTS SUMMARY)
| Funzione | Sezione | Must | Should | May | Not |
|---|---|---|---|---|---|
| Verificare il checksum IP, rifiutare i datagrammi errati | 3.2.1.2 | x | |||
| Rifiutare i datagrammi con version != 4 | 3.2.1.1 | x | |||
| Riassemblare i datagrammi di almeno 576 byte | 3.2.1.4 | x | |||
| Supporto dell'indirizzamento di sottorete | 3.3.4.2 | x | |||
| Implementare ICMP | 3.2.2 | x | |||
| Inviare ICMP Destination Unreachable | 3.2.2.1 | x | |||
| Implementare il server ICMP Echo | 3.2.2.6 | x | |||
| Supporto del multicasting IP | 3.3.7 | x | |||
| Rilevamento gateway morto | 3.3.1.4 | x | |||
| Elaborare l'opzione Record Route | 3.2.1.8 | x | |||
| Elaborare l'opzione Source Route | 3.3.5 | x |