Aller au contenu principal

RFC 9293 - Protocole de Contrôle de Transmission (Transmission Control Protocol)

  • Statut: Internet Standard
  • Publié: August 2022
  • Stream: IETF
  • Met à jour: RFC1011, RFC1122, RFC5961
  • Remplace: RFC793, RFC879, RFC2873, RFC6093, RFC6429, RFC6528, RFC6691
  • Errata: Pas d'errata

Résumé (Abstract)​

Ce document spécifie le Protocole de Contrôle de Transmission (Transmission Control Protocol, TCP). TCP est un protocole important de la couche transport dans la pile de protocoles Internet, et il a continuellement évolué au cours de décennies d'utilisation et de croissance d'Internet. Pendant cette période, un certain nombre de changements ont été apportés à TCP tel qu'il était spécifié dans le RFC 793, bien que ceux-ci n'aient été documentés que de manière fragmentaire. Ce document rassemble ces changements avec la spécification du protocole du RFC 793.

Ce document rend obsolètes le RFC 793, ainsi que les RFC 879, 2873, 6093, 6429, 6528 et 6691 qui ont mis à jour des parties du RFC 793. Il met à jour les RFC 1011 et 1122, et il devrait être considéré comme un remplacement pour les portions de ces documents traitant des exigences TCP. Il met également à jour le RFC 5961 en ajoutant une petite clarification dans la gestion des réinitialisations dans l'état SYN-RECEIVED. Les bits de contrôle d'en-tête TCP du RFC 793 ont également été mis à jour sur la base du RFC 3168.


Table des Matières (Table of Contents)​

Annexes (Appendices)​


Ressources Connexes​


Référence Rapide​

Qu'est-ce que TCP?​

TCP (Transmission Control Protocol, Protocole de Contrôle de Transmission) est un protocole central de la couche transport dans la pile de protocoles Internet, fournissant:

  • Orienté Connexion - Établit une connexion avant la communication
  • Transmission Fiable - Garantit l'arrivée correcte des données
  • Livraison Ordonnée - Reçoit les données dans l'ordre d'envoi
  • Contrôle de Flux - Empêche la surcharge du récepteur
  • Contrôle de Congestion - Évite la congestion du réseau

Fonctionnalités Principales​

  • ✅ Poignée de Main à Trois Voies - Établissement de connexion
  • ✅ Mécanisme de Numéro de Séquence - Garantit l'ordre et la fiabilité
  • ✅ Accusé de Réception - Confirmation de l'arrivée des données
  • ✅ Retransmission par Temporisation - Gère la perte de paquets
  • ✅ Fenêtre Glissante - Contrôle de flux
  • ✅ Contrôle de Congestion - Stabilité du réseau

TCP vs UDP​

FonctionnalitéTCPUDP
ConnexionOrienté connexionSans connexion
FiabilitéFiableNon fiable
OrdonnancementGarantiNon garanti
VitessePlus lentPlus rapide
SurchargePlus élevéePlus faible
Cas d'usageHTTP, SMTP, FTP, SSHDNS, Streaming vidéo, Jeux

Importance du RFC 9293​

RFC 9293 vs RFC 793:

  • RFC 793 (1981) - Spécification TCP originale
  • RFC 9293 (2022) - Norme la plus récente, consolidant 40 ans d'évolution
  • Rend obsolète le RFC 793 et plusieurs mises à jour
  • Clarifie les exigences d'implémentation TCP modernes
  • Met à jour les meilleures pratiques de sécurité et de performance

Améliorations Majeures:

  • Consolide toutes les extensions et errata TCP
  • Clarifie les options obligatoires
  • Met à jour les exigences de contrôle de congestion
  • Améliore les considérations de sécurité
  • Reflète l'environnement réseau moderne

Ports TCP Courants​

  • HTTP: 80
  • HTTPS: 443
  • SMTP: 25
  • FTP: 20, 21
  • SSH: 22
  • Telnet: 23
  • POP3: 110
  • IMAP: 143

RFC Connexes:

  • RFC 768 - UDP (User Datagram Protocol)
  • RFC 791 - IP (Internet Protocol)
  • RFC 5681 - Contrôle de Congestion TCP
  • RFC 7323 - Extensions TCP (Mise à l'échelle de fenêtre, Horodatages)
  • RFC 7413 - TCP Fast Open
  • RFC 8200 - Spécification IPv6

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.