Appendice B. Riepilogo dei Requisiti TCP
Questa appendice riassume tutti i requisiti di implementazione contrassegnati con parole chiave RFC 2119 (MUST, SHOULD, MAY, ecc.) in RFC 9293.
Requisiti di Protocollo di Base
Requisiti MUST (Obbligatorio)
-
Formato dell'Header
- Le implementazioni TCP DEVONO seguire il formato dell'header definito in RFC 9293
- I bit riservati DEVONO essere impostati a zero
- Il campo checksum DEVE sempre essere calcolato e inviato
-
Elaborazione delle Opzioni
- DEVE supportare l'opzione Maximum Segment Size (MSS) (Kind 2)
- DEVE ignorare le opzioni non riconosciute
- DEVE supportare End of Option List (EOL, Kind 0) e No-Operation (NOP, Kind 1)
-
Numeri di Sequenza
- L'Initial Sequence Number (ISN) DEVE essere scelto in modo imprevedibile
- I numeri di sequenza DEVONO tracciare ogni byte di dati
-
Gestione della Connessione
- DEVE usare l'handshake a tre vie per stabilire le connessioni
- DEVE seguire le transizioni di stato appropriate
- DEVE implementare lo stato TIME-WAIT
-
Trasmissione Dati
- DEVE consegnare i dati ricevuti in ordine
- DEVE validare i checksum dei segmenti
- DEVE rispettare la dimensione della finestra
-
Gestione degli Errori
- DEVE scartare i segmenti con checksum non validi
- DEVE inviare RST per stati non validi
Requisiti SHOULD (Raccomandato)
-
Prestazioni
- Le implementazioni DOVREBBERO supportare l'opzione di Window Scaling (RFC 7323)
- Le implementazioni DOVREBBERO supportare l'opzione Timestamp (RFC 7323)
- Le implementazioni DOVREBBERO supportare SACK (Selective Acknowledgment, RFC 2018)
-
Controllo della Congestione
- Le implementazioni DOVREBBERO usare algoritmi di controllo della congestione appropriati
- DOVREBBE seguire gli algoritmi definiti in RFC 5681
-
Sicurezza
- Le implementazioni DOVREBBERO proteggersi da attacchi ISN prevedibili
- Le implementazioni DOVREBBERO mitigare gli attacchi blind in-window (RFC 5961)
Requisiti MAY (Opzionale)
-
Funzionalità Opzionali
- Le implementazioni POSSONO supportare il meccanismo del puntatore urgente
- Le implementazioni POSSONO supportare opzioni TCP aggiuntive
-
Ottimizzazioni
- Le implementazioni POSSONO implementare l'algoritmo di Nagle
- Le implementazioni POSSONO usare il meccanismo di ACK ritardato
Requisiti Dettagliati per Categoria
1. Elaborazione delle Opzioni
Obbligatorio (MUST):
- Kind 0 (EOL): Fine della Lista di Opzioni
- Kind 1 (NOP): No-Operation
- Kind 2 (MSS): Dimensione Massima del Segmento
Raccomandato (SHOULD):
- Kind 3: Window Scaling (RFC 7323)
- Kind 4,5: SACK Permesso e SACK (RFC 2018)
- Kind 8: Timestamp (RFC 7323)
Opzionale (MAY):
- Altre opzioni standardizzate
2. Numeri di Sequenza
Obbligatorio (MUST):
- L'ISN DEVE essere generato usando un generatore di numeri casuali crittograficamente sicuro
- I numeri di sequenza DEVONO tracciare ogni byte di dati
- DEVE rilevare e scartare i segmenti duplicati
Raccomandato (SHOULD):
- DOVREBBE proteggersi da attacchi di numero di sequenza (RFC 6528)
3. Gestione della Connessione
Obbligatorio (MUST):
- DEVE implementare l'handshake a tre vie
- DEVE seguire le transizioni di stato di connessione appropriate
- DEVE mantenere lo stato TIME-WAIT per almeno 2MSL
- DEVE gestire apertura e chiusura simultanee
Raccomandato (SHOULD):
- DOVREBBE mitigare gli attacchi SYN flood con SYN cookies o meccanismo equivalente
4. Trasmissione Dati
Obbligatorio (MUST):
- DEVE consegnare i dati in ordine
- DEVE rispettare i limiti di dimensione della finestra
- DEVE validare i checksum
- DEVE ritrasmettere i segmenti persi
Raccomandato (SHOULD):
- DOVREBBE implementare meccanismi di timeout appropriati
- DOVREBBE usare algoritmi di controllo della congestione
5. Gestione degli Errori
Obbligatorio (MUST):
- DEVE scartare i segmenti con checksum non validi
- DEVE inviare RST per stati non validi
- DEVE gestire correttamente gli ACK fuori intervallo
Raccomandato (SHOULD):
- DOVREBBE mitigare gli attacchi di reset blind (RFC 5961)
Lista di Controllo dell'Implementazione
Funzionalità Core
- Elaborazione completa dell'header TCP
- Handshake a tre vie
- Chiusura della connessione a quattro vie
- Gestione dei numeri di sequenza
- Calcolo e validazione del checksum
- Controllo di flusso di base (meccanismo della finestra)
- Meccanismo di ritrasmissione
- Gestione dello stato TIME-WAIT
Opzioni Obbligatorie
- Opzione MSS (Dimensione Massima del Segmento)
- EOL (Fine della Lista di Opzioni)
- NOP (No-Operation)
Funzionalità Raccomandate
- Window Scaling (RFC 7323)
- Opzione Timestamp (RFC 7323)
- SACK (Selective Acknowledgment, RFC 2018)
- Controllo della congestione appropriato (RFC 5681)
- ECN (Explicit Congestion Notification, RFC 3168)
Funzionalità di Sicurezza
- Generazione sicura dell'ISN
- Protezione SYN flood
- Mitigazione attacco blind in-window (RFC 5961)
- Validazione del numero di sequenza
Ottimizzazioni delle Prestazioni
- ACK ritardato
- Algoritmo di Nagle
- Ritrasmissione veloce e recupero veloce
- Misurazione RTT appropriata
Definizioni dei Livelli di Requisito
Come definito in RFC 2119:
- MUST / REQUIRED / SHALL: Requisito assoluto
- MUST NOT / SHALL NOT: Divieto assoluto
- SHOULD / RECOMMENDED: Dovrebbe essere seguito salvo valida ragione
- SHOULD NOT / NOT RECOMMENDED: Dovrebbe essere evitato salvo valida ragione
- MAY / OPTIONAL: Elemento veramente opzionale
Nota: Per i dettagli completi dei requisiti e il contesto, fare riferimento al corpo di RFC 9293. Questa appendice fornisce un riepilogo pratico ma non sostituisce la specifica ufficiale.