Passa al contenuto principale

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)

  1. 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
  2. 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)
  3. Numeri di Sequenza

    • L'Initial Sequence Number (ISN) DEVE essere scelto in modo imprevedibile
    • I numeri di sequenza DEVONO tracciare ogni byte di dati
  4. 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
  5. Trasmissione Dati

    • DEVE consegnare i dati ricevuti in ordine
    • DEVE validare i checksum dei segmenti
    • DEVE rispettare la dimensione della finestra
  6. Gestione degli Errori

    • DEVE scartare i segmenti con checksum non validi
    • DEVE inviare RST per stati non validi

Requisiti SHOULD (Raccomandato)

  1. 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)
  2. Controllo della Congestione

    • Le implementazioni DOVREBBERO usare algoritmi di controllo della congestione appropriati
    • DOVREBBE seguire gli algoritmi definiti in RFC 5681
  3. Sicurezza

    • Le implementazioni DOVREBBERO proteggersi da attacchi ISN prevedibili
    • Le implementazioni DOVREBBERO mitigare gli attacchi blind in-window (RFC 5961)

Requisiti MAY (Opzionale)

  1. Funzionalità Opzionali

    • Le implementazioni POSSONO supportare il meccanismo del puntatore urgente
    • Le implementazioni POSSONO supportare opzioni TCP aggiuntive
  2. 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.