Passa al contenuto principale

1. Introduzione (Introduction)

Questo documento fa parte di una coppia che definisce e discute i requisiti per le implementazioni di sistemi host della suite di protocolli Internet. Questo RFC copre i livelli del protocollo di comunicazione: livello di collegamento (link layer), livello IP (IP layer) e livello di trasporto (transport layer). Il suo RFC compagno "Requirements for Internet Hosts -- Application and Support" [INTRO:1] copre i protocolli del livello applicativo. Questo documento dovrebbe essere letto anche in congiunzione con "Requirements for Internet Gateways" [INTRO:2].

Questi documenti hanno lo scopo di fornire orientamento a produttori, implementatori e utenti di software di comunicazione Internet. Rappresentano il consenso di un grande corpus di esperienza tecnica e saggezza contribuito dai membri delle comunità di ricerca e produzione Internet.

Questo RFC elenca i protocolli standard che un host connesso a Internet deve utilizzare (MUST) e incorpora per riferimento gli RFC e altri documenti che descrivono le specifiche attuali per questi protocolli. Corregge errori nei documenti di riferimento e aggiunge discussioni e orientamenti aggiuntivi per un implementatore.

Per ogni protocollo, questo documento contiene anche un insieme esplicito di requisiti, raccomandazioni e opzioni. Il lettore deve comprendere che l'elenco dei requisiti in questo documento è di per sé incompleto; l'insieme completo di requisiti per un host Internet è principalmente definito nei documenti di specifica del protocollo standard, con le correzioni, le modifiche e gli ampliamenti contenuti in questo RFC.

Un'implementazione in buona fede dei protocolli, creata dopo un'attenta lettura degli RFC e con una certa interazione con la comunità tecnologica Internet, e che segue buone pratiche di ingegneria del software di comunicazione, dovrebbe differire dai requisiti di questo documento solo in punti minori. Pertanto, in molti casi i "requisiti" in questo RFC sono già dichiarati o impliciti nei documenti del protocollo standard, quindi la loro inclusione qui è in un certo senso ridondante. Tuttavia, sono stati inclusi perché alcune implementazioni precedenti hanno fatto la scelta sbagliata, causando problemi di interoperabilità, prestazioni e/o robustezza.

Questo documento contiene discussioni e spiegazioni di molti dei requisiti e delle raccomandazioni. Un semplice elenco di requisiti sarebbe pericoloso, perché:

  • Alcune funzionalità richieste sono più importanti di altre, e alcune funzionalità sono opzionali (optional).
  • Potrebbero esserci ragioni valide per cui particolari prodotti dei fornitori progettati per contesti limitati potrebbero utilizzare altre specifiche.

Le specifiche di questo documento devono tuttavia essere seguite (MUST) per raggiungere l'obiettivo generale dell'interoperazione arbitraria degli host attraverso la diversità e la complessità del sistema Internet. Sebbene la maggior parte delle implementazioni attuali non soddisfi questi requisiti in vari modi, alcuni minori e alcuni significativi, questa specifica è l'ideale verso cui dobbiamo muoverci.

Questi requisiti sono basati sullo stato attuale dell'architettura Internet. Questo documento sarà aggiornato secondo necessità per fornire ulteriori chiarimenti o per includere informazioni aggiuntive nelle aree in cui le specifiche si stanno ancora evolvendo.

Questa sezione introduttiva inizia con una breve panoramica dell'architettura Internet dal punto di vista degli host, e quindi fornisce alcuni consigli generali ai produttori di software host. Infine, ci sono alcune indicazioni su come leggere il resto del documento e una terminologia.

1.1 L'architettura Internet (The Internet Architecture)

Informazioni generali di background e discussioni sull'architettura Internet e sulla suite di protocolli di supporto possono essere trovate nel DDN Protocol Handbook [INTRO:3]; per background vedere ad esempio [INTRO:9], [INTRO:10] e [INTRO:11]. Il riferimento [INTRO:5] descrive la procedura per ottenere documenti del protocollo Internet, mentre [INTRO:6] contiene un elenco dei numeri assegnati nei protocolli Internet.

1.1.1 Host Internet (Internet Hosts)

Un computer host, o semplicemente "host", è il consumatore finale dei servizi di comunicazione. Un host generalmente esegue programmi applicativi per conto di utenti e utilizza servizi di comunicazione di rete e/o Internet a supporto di questa funzione. Un host Internet corrisponde al concetto di "End-System (End-System)" utilizzato nella suite di protocolli OSI [INTRO:13].

1.1.2 Assunzioni architetturali (Architectural Assumptions)

L'architettura Internet si basa su un insieme specifico di assunzioni sul sistema di comunicazione, e le implementazioni devono (MUST) riflettere queste assunzioni. Le assunzioni architetturali più importanti sono le seguenti:

  • Internet è un grande sistema distribuito: Non c'è controllo centrale; invece, ci sono domini amministrativi autonomi o "Sistemi Autonomi (Autonomous Systems, AS)".
  • Eterogeneità: Internet è costruito da molti sistemi di comunicazione diversi, incluse diverse tecnologie di collegamento dati e diverse implementazioni di router.
  • Robustezza: Il sistema deve continuare a funzionare di fronte ai fallimenti dei componenti (MUST).

1.1.3 Suite di protocolli Internet (Internet Protocol Suite)

Per utilizzare il sistema Internet per la comunicazione, un host deve (MUST) implementare l'insieme stratificato di protocolli che compongono la suite di protocolli Internet. Un host deve tipicamente implementare almeno un protocollo da ciascun livello.

I livelli di protocollo utilizzati nell'architettura Internet sono:

  • Livello applicativo (Application Layer)
  • Livello di trasporto (Transport Layer)
  • Livello Internet (Internet Layer)
  • Livello di collegamento (Link Layer)

1.1.4 Codice gateway incorporato (Embedded Gateway Code)

Alcuni host Internet saranno collegati a reti che sono state chiamate reti stub. Una rete stub è definita come una rete che trasporta solo traffico per gli host direttamente ad essa collegati. Esempi comuni di reti stub sono le LAN dipartimentali.

1.2 Considerazioni generali (General Considerations)

1.2.1 Evoluzione continua di Internet (Continuing Internet Evolution)

Il sistema Internet è cresciuto ed evoluto continuamente dalle sue origini nell'ARPANET più di 20 anni fa. Pertanto, i requisiti di implementazione e le specifiche devono essere flessibili per adattarsi al cambiamento continuo.

1.2.2 Principio di robustezza (Robustness Principle)

A ogni livello dei protocolli, c'è una regola generale la cui applicazione può portare a enorm

i benefici in robustezza e interoperabilità:

"Sii liberale in ciò che accetti e conservativo in ciò che invii"

Il software dovrebbe essere scritto per gestire ogni errore concepibile, non importa quanto improbabile; prima o poi un pacchetto con quella particolare combinazione di errori e attributi arriverà, e se il software non è preparato, può verificarsi il caos. In generale, è meglio assumere che la rete sia piena di entità malevoli che invieranno pacchetti progettati per avere il peggiore effetto possibile. Questa assunzione porterà a un design di protezione ragionevole.

1.2.3 Registrazione degli errori (Error Logging)

La suite di protocolli Internet include diversi meccanismi per segnalare errori all'host di origine. Non tutti gli errori vengono tuttavia segnalati tramite meccanismi del protocollo; alcuni vengono semplicemente registrati localmente nel sistema host. La sofisticazione della funzionalità di registrazione degli errori e i dettagli del suo utilizzo possono variare da sistema a sistema.

1.2.4 Configurazione (Configuration)

La configurazione di un sistema host generalmente non è specificata dai documenti del protocollo Internet. Tuttavia, ci sono alcuni parametri di configurazione che devono essere configurabili in ogni host Internet (MUST).

1.3 Leggere questo documento (Reading this Document)

1.3.1 Organizzazione (Organization)

Questo documento copre le seguenti aree principali:

  • Livello di collegamento (Link Layer) (Sezione 2)
  • Protocolli del livello Internet (Internet Layer protocols) (Sezione 3)
  • Protocolli del livello di trasporto (Transport Layer protocols) (Sezione 4)

1.3.2 Requisiti (Requirements)

In questo documento, le parole utilizzate per definire il significato di ogni particolare requisito sono in maiuscolo. Queste parole sono:

  • MUST: Questa parola, o l'aggettivo "REQUIRED", significa che l'elemento è un requisito assoluto della specifica.
  • SHOULD: Questa parola, o l'aggettivo "RECOMMENDED", significa che potrebbero esistere ragioni valide in particolari circostanze per ignorare questo elemento, ma le implicazioni complete devono essere comprese e il caso attentamente ponderato prima di scegliere un corso diverso.
  • MAY: Questa parola, o l'aggettivo "OPTIONAL", significa che questo elemento è veramente opzionale.

1.3.3 Terminologia (Terminology)

Questo documento utilizza i seguenti termini tecnici:

  • Segmento (Segment): Un segmento è l'unità di trasmissione end-to-end nel protocollo TCP.
  • Messaggio (Message): In questa descrizione dei protocolli di livello inferiore, un messaggio è l'unità di trasmissione in un protocollo del livello di trasporto.
  • Datagramma (Datagram): Un datagramma è un pacchetto IP.
  • Pacchetto (Packet): Un pacchetto è un qualsiasi blocco di dati formattato.
  • Frame: Un frame è un pacchetto del livello di collegamento.
  • Rete connessa (Connected Network): Una rete connessa è qualsiasi rete a cui un host è connesso, sia fisicamente, virtualmente o logicamente.
  • Multihomed: Un host è detto multihomed se ha più indirizzi IP.

1.4 Ringraziamenti (Acknowledgments)

Questo documento contiene contributi e commenti di molti membri della comunità Internet.