Transmission Control Protocol - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Pile de protocoles
7 • Application
6 • Présentation
5 • Session
4 • Transport (Le transport est le fait de porter quelque chose, ou quelqu'un, d'un lieu à un autre, le plus souvent en utilisant des véhicules et des voies de communications (la route,...)
3 • Réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets », c'est-à-dire un petit filet), on...)
2 • Liaison
1 • Physique (La physique (du grec φυσις, la nature) est étymologiquement la « science de la nature ». Dans un sens...)
Modèle Internet (Internet est le réseau informatique mondial qui rend accessibles au public des services variés comme le courrier électronique, la messagerie instantanée et le World Wide Web, en utilisant le protocole de communication IP...)
Modèle OSI (Le modèle OSI (de l'anglais Open Systems Interconnection, « Interconnexion de systèmes ouverts ») d'interconnexion en réseau des systèmes ouverts est un modèle de communications...)

Transmission Control Protocol (Transmission Control Protocol (littéralement, « protocole de contrôle de transmissions ») abrégé TCP, est un protocole de transport fiable, en mode connecté, documenté dans...) (littéralement, « protocole de contrôle (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.) de transmissions ») abrégé TCP, est un protocole de transport fiable, en mode connecté, documenté dans la RFC 793 de l' IETF.

Dans le modèle TCP/IP, TCP est situé au niveau de la couche de transport (entre la couche de réseau et la couche application). Les applications transmettent des flux (Le mot flux (du latin fluxus, écoulement) désigne en général un ensemble d'éléments (informations / données, énergie, matière, ...) évoluant dans un sens commun. Plus précisément le terme est employé dans les domaines...) de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) sur une connexion réseau (Une connexion réseau désigne le fait qu'un équipement informatique (au sens ETTD, c’est-à-dire un ordinateur, une imprimante, etc.) soit rattaché à un réseau informatique.), et TCP découpe le flux d'octets en segments, dont la taille dépend de la MTU du réseau sous-jacent (couche liaison de données).

Fonctionnement

Une session TCP fonctionne en trois phases :

  • l'établissement de la connexion ;
  • les transferts de données ;
  • la fin de la connexion.

L'établissement de la connexion se fait par une poignée de main (La main est l’organe préhensile effecteur situé à l’extrémité de l’avant-bras et relié à ce dernier par le poignet. C'est un organe destiné...) en trois temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) (handshaking). La rupture de connexion, elle, utilise une poignée de main en quatre temps. Pendant la phase (Le mot phase peut avoir plusieurs significations, il employé dans plusieurs domaines et principalement en physique :) d'établissement de la connexion, des paramètres comme le numéro de séquence sont initialisés afin d'assurer la transmission fiable (sans perte et dans l'ordre) des données.

Structure d'un segment TCP

En bits

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Port Source 2 octets
Port destination 2 octets
Numéro de séquence
Numéro d'acquittement
Taille de l'en-tête
réservé
ECN
URG
ACK
PSH
RST
SYN
FIN
Fenêtre (En architecture et construction, une fenêtre est une baie, une ouverture dans un mur ou un pan incliné de toiture, avec ou sans vitres.)
Somme de contrôle
Pointeur de données urgentes
Options
Remplissage
Données


Signification des champs :

  • Port source : Numéro du port source
  • Port destination : Numéro du port destination
  • Numéro de séquence : Numéro de séquence du premier octet de ce segment
  • Numéro d'acquittement : Numéro de séquence du prochain octet attendu
  • Taille de l'en-tête : Longueur (La longueur d’un objet est la distance entre ses deux extrémités les plus éloignées. Lorsque l’objet est filiforme ou en forme de lacet, sa longueur est celle de...) de l'en-tête en mots de 32 bits (les options font partie de l'en-tête)
  • Réservé : Réservé pour un usage (L’usage est l'action de se servir de quelque chose.) futur
  • ECN : signale la présence de congestion ( La congestion est l'augmentation subite de la quantité de sang contenue dans les vaisseaux d'un organe ou d'une partie d'organe. La congestion d'un réseau informatique est la condition dans laquelle une augmentation...), voir RFC 3168
  • Drapeaux
    • URG : Signale la présence de données URGentes
    • ACK : Signale que le paquet est un accusé de réception (ACKnowledgement)
    • PSH : Données à envoyer tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) de suite (PuSH)
    • RST : Rupture anormale de la connexion (ReSeT)
    • SYN : Demande de SYNchronisation ou établissement de connexion
    • FIN : Demande la FIN de la connexion
  • Fenêtre : Taille de fenêtre demandée, c'est-à-dire le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) d'octets que le récepteur souhaite recevoir sans accusé de réception
  • Checksum : Somme de contrôle calculée sur l'ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut être comprise comme un tout », comme...) de l'en-tête TCP et des données, mais aussi sur un pseudo en-tête (extrait de l'en-tête IP)
  • Pointeur de données urgentes : Position relative des dernières données urgentes
  • Options : Facultatives
  • Remplissage : Zéros ajoutés pour aligner les champs suivants du paquet sur 32 bits, si nécessaire
  • Données : Séquences d'octets transmis par l'application (par exemple: +OK POP3 server ready...)

Établissement d'une connexion

Tcp normal.png

Même s'il est possible pour deux systèmes d'établir une connexion entre eux simultanément, dans le cas général, un système ouvre un 'socket' (point d'accès à une connexion TCP) et se met en attente passive de demandes de connexion d'un autre système. Ce fonctionnement est communément appelé ouverture passive, et est utilisé par le côté serveur de la connexion. Le côté client de la connexion effectue une ouverture active en 3 temps (poignée de mains en trois temps) :

  1. Le client envoie un segment SYN au serveur,
  2. Le serveur lui répond par un segment SYN/ACK,
  3. Le client confirme par un segment ACK.

Durant cet échange initial, les numéros de séquence des deux parties sont synchronisés :

  1. Le client utilise son numéro de séquence initial dans le champ (Un champ correspond à une notion d'espace défini:) "Numéro de séquence" du segment SYN (x par exemple),
  2. Le serveur utilise son numéro de séquence initial dans le champ "Numéro de séquence" du segment SYN/ACK (y par exemple) et ajoute le numéro de séquence du client plus un (x+1) dans le champ "Numéro d'acquittement" du segment,
  3. Le client confirme en envoyant un ACK avec un numéro de séquence augmenté de un (x+1) et un numéro d'acquittement correspondant au numéro de séquence du serveur plus un (y+1).

Transferts de données

Pendant la phase de transferts de données, certains mécanismes clefs permettent d'assurer la robustesse et la fiabilité (Un système est fiable lorsque la probabilité de remplir sa mission sur une durée donnée correspond à celle spécifiée dans le cahier des charges.) de TCP. En particulier, les numéros de séquence sont utilisés afin d'ordonner les segments TCP reçus et de détecter les données perdues, les sommes de contrôle permettent la détection d'erreurs, et les acquittements ainsi que les temporisations permettent la détection des segments perdus ou retardés.

Numéros de séquence et d'acquittement

Grâce aux numéros de séquence et d'acquittement, les systèmes terminaux peuvent remettre les données reçues dans l'ordre à l'application destinataire.

Les numéros de séquence sont utilisés pour décompter les données dans le flux d'octets. On trouve toujours deux de ces nombres dans chaque segment TCP, qui sont le numéro de séquence et le numéro d'acquittement. Le numéro de séquence représente le propre numéro de séquence de l'émetteur TCP, tandis que le numéro d'acquittement représente le numéro de séquence du destinataire. Afin d'assurer la fiabilité de TCP, le destinataire doit acquitter les segments reçus en indiquant qu'il a reçu toutes les données du flux d'octets jusqu'à un certain numéro de séquence.

Le numéro de séquence indique le premier octet des données.

Par exemple, dans le cas d'un échange de segments par Telnet :

  1. L'hôte A envoie un segment à l'hôte B contenant un octet de données, un numéro de séquence égal à 42 (Seq = 42) et un numéro d'acquittement égal à 79 (Ack = 79),
  2. L'hôte B envoie un segment ACK à l'hôte A. Le numéro de séquence de ce segment correspond au numéro d'acquittement de l'hôte A (Seq = 79) et le numéro d'acquittement au numéro de séquence de A tel que reçu par B, augmenté de la quantité (La quantité est un terme générique de la métrologie (compte, montant) ; un scalaire, vecteur, nombre d’objets ou d’une autre manière de dénommer la valeur d’une collection ou...) de données en bytes reçue (Ack = 42 + 1 = 43),
  3. L'hôte A confirme la réception du segment en envoyant un ACK à l'hôte B, avec comme numéro de séquence son nouveau numéro de séquence, à savoir 43 (Seq = 43) et comme numéro d'acquittement le numéro de séquence du segment précédemment reçu, augmenté de la quantité de données reçue (Ack = 79 + 1 = 80).

Les numéros de séquence sont des nombres entiers non signés sur 32 bits, qui reviennent à zéro (Le chiffre zéro (de l’italien zero, dérivé de l’arabe sifr, d’abord transcrit zefiro en italien) est un symbole marquant une position vide dans...) après avoir atteint 2^32-1. Le choix du numéro de séquence initial est une des clefs de la robustesse et de la sécurité des connexions TCP.

Une amélioration de TCP, nommée acquittement sélectif (selective acknowledgement ou SACK), autorise le destinataire TCP à acquitter des blocs de données reçus dans le désordre.

Somme de contrôle

Une somme de contrôle sur 16 bits, constituée par le complément à un de la somme complémentée à un de tous les éléments d'un segment TCP (en-tête et données), est calculée par l'émetteur, et incluse dans le segment émis. Le destinataire recalcule la somme de contrôle du segment reçu, et si elle correspond à la somme de contrôle reçue, on considère que le segment a été reçu intact et sans erreur.

La somme de contrôle en complément à un utilisée par TCP est relativement peu fiable selon les standards modernes. Ceci restreint l'utilisation de TCP à des réseaux offrant des taux d'erreurs faibles. Si TCP était redéfini aujourd'hui, on utiliserait probablement un CRC sur 32 bits au lieu du mécanisme actuel. Ce manque de fiabilité de la somme de contrôle est partiellement compensé par l'utilisation fréquente d'un CRC ou d'un meilleur contrôle d'intégrité au niveau 2 (couche liaison de données), au-dessous de TCP et IP, comme par exemple dans les trames PPP ou Ethernet (Ethernet est un protocole de réseau local à commutation de paquets. Bien qu'il implémente la couche physique (PHY) et la sous-couche Media Access Control (MAC) du modèle OSI, le protocole Ethernet...). Toutefois, cela ne signifie pas que la somme de contrôle TCP est redondante : des études sur le trafic Internet ont montré qu'on rencontre couramment des erreurs matérielles et logicielles qui introduisent des erreurs dans les paquets entre les nœuds protégés par des CRC, et que le principe de somme de contrôle de bout en bout de TCP détecte la plupart de ces erreurs.

Temporisation

La perte d'un segment est gérée par TCP en utilisant un mécanisme de temporisation et de retransmission. Après l'envoi d'un segment, TCP va attendre un certain temps la réception du ACK correspondant. Un temps trop court entraîne un grand nombre de retransmissions inutiles et un temps trop long ralentit la réaction en cas de perte d'un segment.

Dans les faits, le délai (Un délai est d'après le Wiktionnaire, « un temps accordé pour faire une chose, ou à l’expiration duquel on sera tenu de faire une certaine chose.  ».) avant retransmission doit être supérieur au RTT moyen d'un segment, c'est-à-dire au temps que prend un segment pour effectuer l'aller-retour entre le client et le serveur. Comme cette valeur peut varier dans le temps, on "prélève" des échantillons à intervalle régulier et on en calcule une moyenne (La moyenne est une mesure statistique caractérisant les éléments d'un ensemble de quantités : elle exprime la grandeur qu'auraient chacun des membres de l'ensemble s'ils étaient tous...) pondérée :

      RTT moyen = (1-α) * RTT moyen + α * RTT échantillon (De manière générale, un échantillon est une petite quantité d'une matière, d'information, ou d'une solution. Le mot est utilisé dans différents domaines :)      

Une valeur typique pour α est 0.125. L'influence des échantillons diminue de manière exponentielle (La fonction exponentielle est l'une des applications les plus importantes en analyse, ou plus généralement en mathématiques et dans ses domaines...) dans le temps.

Le délai à utiliser est obtenu à partir de cette estimation du RTT moyen et en y ajoutant une marge de sécurité. Plus la différence entre un échantillon et la moyenne est grande, plus la marge de sécurité à prévoir est importante. Le calcul se fait à partir de la variance ( En statistique et en probabilité, variance En thermodynamique, variance ) pondérée entre l'échantillon et la moyenne :

      Variance RTT = (1-β) * Variance RTT + β * |RTT échantillon - RTT moyen|      

Une valeur typique pour β est 0.25. Le délai à utiliser est finalement donné par la formule suivante :

      Délai = RTT moyen + 4 * Variance RTT      

Parfois, quand le délai est trop long, il est avantageux de ne pas attendre avant de retransmettre un segment. Si un hôte reçoit 3 ACKs pour le même segment, alors il considère que tous les segments transmis après le segment acquitté ont été perdus et les retransmet donc immédiatement (Fast retransmit).

Contrôle de flux

Chaque partenaire dans une connexion TCP dispose d'un tampon de réception dont la taille n'est pas illimitée. Afin d'éviter qu'un hôte ne surcharge l'autre, TCP prévoit plusieurs mécanismes de contrôle de flux. Ainsi, chaque segment TCP contient la taille disponible dans le tampon de réception de l'hôte qui l'a envoyé. En réponse, l'hôte distant va limiter la taille de la fenêtre d'envoi afin de ne pas le surcharger.

D'autres algorithmes comme Nagle ou Clarck facilitent également le contrôle du flux.

Contrôle de congestion

La congestion intervient lorsque trop de sources tentent d'envoyer trop de données trop vite pour que le réseau soit capable de les transmettre. Ceci entraîne la perte de nombreux paquets et de longs délais.

Les acquittements des données émises, ou l'absence d'acquittements, sont utilisés par les émetteurs pour interpréter de façon implicite l'état du réseau entre les systèmes finaux. À l'aide de temporisations, les émetteurs et destinataires TCP peuvent modifier le comportement du flux de données. C'est ce qu'on appelle généralement le contrôle de congestion.

Il existe une multitude d'algorithme d'évitement de congestion pour TCP, comme autant de version de TCP.

Autres

TCP utilise un certain nombre de mécanismes afin d'obtenir une bonne robustesse et des performances élevées. Ces mécanismes comprennent l'utilisation d'une fenêtre glissante, l'algorithme de démarrage lent (slow start (STart était un magazine américain traitant de l'informatique et du jeu vidéo, dédié plus particulièrement à l'Atari ST. C'est un spin-off du magazine américain Antic.)), l'algorithme d'évitement de congestion (congestion avoidance), les algorithmes de retransmission rapide (fast retransmit) et de récupération rapide (fast recovery), etc. Des recherches sont menées actuellement afin d'améliorer TCP pour traiter efficacement les pertes, minimiser les erreurs, gérer la congestion et être rapide dans des environnements très haut débit (Le terme de très haut débit (ou THD) fait référence à des capacités d'accès à internet supérieures à celle de l'accès par l'ADSL dans le domaine du fixe et à celles de...).

Terminaison d'une connexion

La phase de terminaison d'une connexion utilise une poignée de main en quatre temps, chaque extrémité de la connexion effectuant sa terminaison de manière indépendante. Ainsi, la fin d'une connexion nécessite une paire (On dit qu'un ensemble E est une paire lorsqu'il est formé de deux éléments distincts a et b, et il s'écrit alors :) de segments FIN et ACK pour chaque extrémité.

Page générée en 0.129 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique