TCP (Transmission Control Protocol) est le protocole de transport orienté connexion de référence au sein de la suite TCP/IP. Pierre angulaire des échanges liés à la consultation de sites web notamment, TCP occupe une position quasi hégémonique du point de vue de la typologie du trafic véhiculé sur Internet. Cette position n’a jamais été démentie depuis les trois dernières décennies, malgré la standardisation de certaines propositions alternatives destinées à promouvoir des modes de transport mieux adaptés aux besoins de certaines applications, par exemple en simplifiant la procédure d’établissement des connexions au niveau de la couche transport ou en améliorant la robustesse des connexions contre des attaques de déni de service. Toutefois, ces propositions alternatives présentées dans la Section 1 de cet article n’ont jamais rencontré le succès espéré, notamment parce que leur impact sur les systèmes d’exploitation (OS, Operating systems) tels que Windows était techniquement et commercialement rédhibitoire, mais aussi parce qu’elles n’ont pas réussi à convaincre la communauté des développeurs d’applications de la nécessité de concevoir de nouvelles sockets capables d’exploiter les ressources de ces nouvelles piles protocolaires de la couche transport.
Pour autant, la spécification de base du protocole TCP publiée en 1981 a évolué au cours du temps et du développement de l’Internet. Ces évolutions fonctionnelles du protocole TCP sont destinées à répondre à des besoins divers et variés, tels que :
-
l’amélioration globale de la performance de la machinerie protocolaire TCP. Cette amélioration est protéiforme et a notamment pour objectif d’optimiser le temps d’établissement d’une connexion TCP en profitant des premiers échanges caractéristiques de la procédure de négociation « 3-way handshake » (3WHS) pour envoyer et recevoir les premières données utiles ;
-
les perspectives de pouvoir exploiter l’ensemble des ressources réseau accessibles à des multi-terminaux interfaces prometteurs. En effet, la capacité d’établir une connexion TCP sur plusieurs chemins permet d’augmenter la bande passante associée à la connexion. Cette capacité permet également d’améliorer la disponibilité du service de connectivité ;
-
la nécessité de rendre les connexions TCP plus imperméables aux attaques de déni de service ;
-
le besoin d’adapter la machinerie protocolaire TCP à l’évolution globale des réseaux, dont certaines ressources sont désormais virtualisées et hébergées dans des infrastructures cloud. Ce besoin est lui aussi protéiforme : il peut s’exprimer en termes de gestion dynamique de la mobilité des machines virtuelles lorsque celles-ci migrent d’un data center vers un autre. Il peut par ailleurs illustrer l’émergence de choix d’ingénierie qui reposent sur l’introduction de fonctions d’agrégation de connexions TCP dans le réseau. De telles fonctions permettent aux utilisateurs de bénéficier d’un usage optimisé des ressources réseau sans pour autant imposer la moindre contrainte sur les terminaux à l’origine de l’établissement d’une connexion TCP.
De tels modèles, où l’établissement et la gestion des connexions TCP bénéficient in fine de l’assistance de fonctions spécifiques typiquement déployées dans les réseaux d’accès, sont aujourd’hui considérés comme les supports privilégiés pour le déploiement d’offres d’accès hybrides. Ces offres sont ainsi capables de combiner avec intelligence l’ensemble des ressources réseaux disponibles pour fournir plus de bande passante ou améliorer la disponibilité globale du service de connectivité. De ce point de vue, leur ingénierie et leur gestion ont un impact inévitable sur la manière dont les connexions TCP sont établies et maintenues, tout en préservant l’utilisateur final d’un quelconque impact sur les technologies des terminaux qu’il utilise pour accéder à lnternet.
Ces différents défis techniques auxquels TCP est désormais confronté sont essentiellement relevés par la spécification et le développement d’options TCP. Ces options enrichissent les capacités fonctionnelles de TCP, au risque parfois d’en compliquer le fonctionnement. Cet article se propose donc de fournir un éclairage sur les évolutions fonctionnelles majeures et néanmoins récentes du protocole TCP. L’article est structuré de la manière suivante :
-
La section 1 présente un résumé des solutions alternatives à TCP pour offrir un mode transport orienté connexion (ou non) adapté notamment aux besoins spécifiques de certaines applications ;
-
Après quelques rappels sur le fonctionnement de TCP tels qu’évoqués dans la section 2, les sections 3 à 7 détaillent certaines des récentes évolutions fonctionnelles majeures du protocole TCP, selon les différents axes d’amélioration – qualité de service, performance, robustesse, sécurité, etc.
-
Enfin, la section 8 présente quelques perspectives d’évolution.
Cet article n’a pas pour but de décrire les fonctions de base TCP, de définir un profil TCP, ou de proposer des paramétrages TCP pour certains déploiements (par exemple, fixe, mobile, LAN, etc.). Cet article a pour principal objectif de décrire certaines évolutions récentes du protocole et d’expliquer les motivations et usages associés.