Aller au contenu principal

Annexe B. Résumé des Exigences TCP

Cette annexe résume toutes les exigences d'implémentation marquées avec les mots-clés RFC 2119 (MUST, SHOULD, MAY, etc.) dans RFC 9293.

Exigences de Protocole de Base

Exigences MUST (Obligatoire)

  1. Format d'En-tête

    • Les implémentations TCP DOIVENT suivre le format d'en-tête défini dans RFC 9293
    • Les bits réservés DOIVENT être mis à zéro
    • Le champ de somme de contrôle DOIT toujours être calculé et envoyé
  2. Traitement des Options

    • DOIT prendre en charge l'option de Taille Maximale de Segment (MSS) (Kind 2)
    • DOIT ignorer les options non reconnues
    • DOIT prendre en charge Fin de Liste d'Options (EOL, Kind 0) et No-Operation (NOP, Kind 1)
  3. Numéros de Séquence

    • Le Numéro de Séquence Initial (ISN) DOIT être choisi de manière imprévisible
    • Les numéros de séquence DOIVENT suivre chaque octet de données
  4. Gestion de Connexion

    • DOIT utiliser la poignée de main à trois voies pour établir les connexions
    • DOIT suivre les transitions d'état appropriées
    • DOIT implémenter l'état TIME-WAIT
  5. Transmission de Données

    • DOIT livrer les données reçues dans l'ordre
    • DOIT valider la somme de contrôle des segments
    • DOIT respecter la taille de fenêtre
  6. Gestion des Erreurs

    • DOIT rejeter les segments avec des sommes de contrôle invalides
    • DOIT envoyer RST pour les états invalides

Exigences SHOULD (Recommandé)

  1. Performance

    • Les implémentations DEVRAIENT prendre en charge l'option de Mise à l'échelle de Fenêtre (RFC 7323)
    • Les implémentations DEVRAIENT prendre en charge l'option d'Horodatage (RFC 7323)
    • Les implémentations DEVRAIENT prendre en charge SACK (Selective Acknowledgment, RFC 2018)
  2. Contrôle de Congestion

    • Les implémentations DEVRAIENT utiliser des algorithmes de contrôle de congestion appropriés
    • DEVRAIT suivre les algorithmes définis dans RFC 5681
  3. Sécurité

    • Les implémentations DEVRAIENT se protéger contre les attaques ISN prévisibles
    • Les implémentations DEVRAIENT atténuer les attaques à l'aveugle dans la fenêtre (RFC 5961)

Exigences MAY (Optionnel)

  1. Fonctionnalités Optionnelles

    • Les implémentations PEUVENT prendre en charge le mécanisme de pointeur urgent
    • Les implémentations PEUVENT prendre en charge des options TCP supplémentaires
  2. Optimisations

    • Les implémentations PEUVENT implémenter l'algorithme de Nagle
    • Les implémentations PEUVENT utiliser le mécanisme d'ACK retardé

Exigences Détaillées par Catégorie

1. Traitement des Options

Obligatoire (MUST):

  • Kind 0 (EOL): Fin de Liste d'Options
  • Kind 1 (NOP): No-Operation
  • Kind 2 (MSS): Taille Maximale de Segment

Recommandé (SHOULD):

  • Kind 3: Mise à l'échelle de Fenêtre (RFC 7323)
  • Kind 4,5: SACK Autorisé et SACK (RFC 2018)
  • Kind 8: Horodatages (RFC 7323)

Optionnel (MAY):

  • Autres options standardisées

2. Numéros de Séquence

Obligatoire (MUST):

  • L'ISN DOIT être généré en utilisant un générateur de nombres aléatoires cryptographiquement sûr
  • Les numéros de séquence DOIVENT suivre chaque octet de données
  • DOIT détecter et rejeter les segments dupliqués

Recommandé (SHOULD):

  • DEVRAIT se protéger contre les attaques de numéro de séquence (RFC 6528)

3. Gestion de Connexion

Obligatoire (MUST):

  • DOIT implémenter la poignée de main à trois voies
  • DOIT suivre les transitions d'état de connexion appropriées
  • DOIT maintenir l'état TIME-WAIT pendant au moins 2MSL
  • DOIT gérer l'ouverture et la fermeture simultanées

Recommandé (SHOULD):

  • DEVRAIT atténuer les attaques par inondation SYN avec SYN cookies ou mécanisme équivalent

4. Transmission de Données

Obligatoire (MUST):

  • DOIT livrer les données dans l'ordre
  • DOIT respecter les limites de taille de fenêtre
  • DOIT valider les sommes de contrôle
  • DOIT retransmettre les segments perdus

Recommandé (SHOULD):

  • DEVRAIT implémenter des mécanismes de temporisation appropriés
  • DEVRAIT utiliser des algorithmes de contrôle de congestion

5. Gestion des Erreurs

Obligatoire (MUST):

  • DOIT rejeter les segments avec des sommes de contrôle invalides
  • DOIT envoyer RST pour les états invalides
  • DOIT gérer correctement les ACK hors limites

Recommandé (SHOULD):

  • DEVRAIT atténuer les attaques de réinitialisation à l'aveugle (RFC 5961)

Liste de Vérification d'Implémentation

Fonctionnalités de Base

  • Traitement complet de l'en-tête TCP
  • Poignée de main à trois voies
  • Fermeture de connexion à quatre voies
  • Gestion des numéros de séquence
  • Calcul et validation de somme de contrôle
  • Contrôle de flux de base (mécanisme de fenêtre)
  • Mécanisme de retransmission
  • Gestion de l'état TIME-WAIT

Options Obligatoires

  • Option MSS (Taille Maximale de Segment)
  • EOL (Fin de Liste d'Options)
  • NOP (No-Operation)

Fonctionnalités Recommandées

  • Mise à l'échelle de Fenêtre (RFC 7323)
  • Option d'Horodatage (RFC 7323)
  • SACK (Selective Acknowledgment, RFC 2018)
  • Contrôle de Congestion approprié (RFC 5681)
  • ECN (Explicit Congestion Notification, RFC 3168)

Fonctionnalités de Sécurité

  • Génération sûre d'ISN
  • Protection contre l'inondation SYN
  • Atténuation des attaques à l'aveugle dans la fenêtre (RFC 5961)
  • Validation des numéros de séquence

Optimisations de Performance

  • ACK retardé
  • Algorithme de Nagle
  • Retransmission rapide et récupération rapide
  • Mesure RTT appropriée

Définitions des Niveaux d'Exigence

Comme défini dans RFC 2119:

  • MUST / REQUIRED / SHALL: Exigence absolue
  • MUST NOT / SHALL NOT: Interdiction absolue
  • SHOULD / RECOMMENDED: Devrait être suivi sauf raison valable
  • SHOULD NOT / NOT RECOMMENDED: Devrait être évité sauf raison valable
  • MAY / OPTIONAL: Élément véritablement optionnel

Note: Pour les détails complets des exigences et le contexte, référez-vous au corps de RFC 9293. Cette annexe fournit un résumé pratique mais ne remplace pas la spécification officielle.