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)
-
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é
-
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)
-
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
-
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
-
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
-
Gestion des Erreurs
- DOIT rejeter les segments avec des sommes de contrôle invalides
- DOIT envoyer RST pour les états invalides
Exigences SHOULD (Recommandé)
-
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)
-
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
-
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)
-
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
-
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.