Les caractéristiques du protocole TCP |
TCP (qui signifie Transmission Control Protocol, soit en français: Protocole de Contrôle de Transmission) est un des principaux protocoles de la couche transport du modèle TCP/IP.
Il permet, au niveau des applications, de gérer les données en provenance (ou à destination) de la couche inférieure
du modèle (c'est-à-dire le protocole IP). Lorsque les données sont fournies
au protocole IP, celui-ci les encapsule dans des datagrammes IP, en fixant le champ protocole à 6 (Pour savoir que le
protocole en amont est TCP...).
TCP est un protocole orienté connexion, c'est-à-dire
qu'il permet à deux machines qui communiquent de contrôler l'état de la transmission.
Les caractéristiques principales du protocole TCP sont les suivantes:
Le but de TCP |
Grâce au protocole TCP, les applications peuvent communiquer de façon sûre (grâce au système d'accusés de réception du protocole TCP), indépendamment des couches inférieures. Cela signifie que les routeurs (qui travaillent dans la couche Internet) ont pour seul rôle l'acheminement des données sous forme de datagrammes, sans se préoccuper du contrôle des données, car celui-ci est réalisé par la couche transport (plus particulièrement par le protocole TCP).
Lors d'une communication à travers le protocole TCP, les deux machines doivent établir une connexion.
La machine émettrice (celle qui demande la connexion) est appelée client, tandis que la machine réceptrice
est appelée serveur. On dit qu'on est alors dans un environnement Client-Serveur.
Les machines dans un tel environnement communiquent en full duplex, c'est-à-dire
que la communication se fait dans les deux sens.
Pour permettre le bon déroulement de la communication et de tous les contrôles qui l'accompagnent, les données sont encapsulées, c'est-à-dire qu'on ajoute aux paquets de données un en-tête qui va permettre de synchroniser les transmissions et d'assurer leur réception.
Une autre particularité de TCP est de pouvoir réguler le débit des données grâce à sa capacité à émettre des messages de taille variable, ces messages sont appelés segments.
La fonction de multiplexage |
TCP permet d'effectuer une tâche importante: le multiplexage/démultiplexage, c'est-à-dire faire transiter sur une même ligne des données provenant d'applications diverses ou en d'autres mots mettre en série des informations arrivant en parallèle.
Ces opérations sont réalisées grâce au concept de ports (ou sockets), c'est-à-dire un numéro associé à un type d'application, qui, combiné à une adresse IP, permet de déterminer de façon unique une application qui tourne sur une machine donnée.
Le format des données sous TCP |
Une trame TCP est constituée comme suit:
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 | Port destination | ||||||||||||||||||||||||||||||
données |
|||||||||||||||||||||||||||||||
Options | Remplissage | ||||||||||||||||||||||||||||||
Signification des différents champs:
Fiabilité des transferts |
Le protocole TCP permet d'assurer le transfert des données de façon fiable, bien qu'il utilise le protocole IP, qui n'intègre aucun contrôle de livraison de datagramme.
En réalité, le protocole TCP possède un système d'accusé
de réception, grâce au drapeau de contrôle ACK.
Lors de l'émission d'un segment, un numéro d'ordre (appelé aussi numéro
de séquence) est associé. A réception d'un segment de donnée, la machine
réceptrice va retourner un segment de donnée dont le drapeau ACK est à 1 (afin
de signaler qu'il s'agit d'un acus&eaute; de réception) accompagné d'un numéro
d'accusé de réception égal au numéro de séquence précédent.
De plus, grâce à une minuterie déclenchée dès réception d'un segment au niveau de la machine émettrice, le segment est réexpédié dès que le temps imparti est écoulé, car dans ce cas la machine émettrice considère que le segment est perdu...
Toutefois, si le segment n'est pas perdu et qu'il arrive tout de même à destination, la machine réceptrice saura grâce au numéro de séquence qu'il s'agit d'un doublon et ne conservera que le premier segment arrivé à destination...
Etablissement d'une connexion |
Etant donné que ce processus de communication, qui se fait grâce à une émission de données et d'un accusé de réception, est basé sur un numéro d'ordre (appelé généralement numéro de séquence), il faut que les machines émettrices et réceptrices (client et serveur) doivent connaître le numéro de séquence initial de l'autre machine.
L'établissement de la connexion entre deux applications se fait souvent selon le schème suivant:
Les deux machines doivent donc synchroniser leurs séquences grâce à un mécanisme communément appelé three ways handshake (poignée de main en trois temps), que l'on retrouve aussi lors de la clôture de session.
Ce dialogue permet d'initier la communication, il se déroule en trois temps, comme sa dénomination l'indique:
Suite à cette séquence comportant trois échanges les deux machines sont synchronisées et la communication peut commencer!
Méthode de la fenêtre glissante |
Dans de nombreux cas, il est possible de limiter le nombre d'accusés de réception, afin de désengorger le réseau, en fixant un nombre de séquence au bout duquel un accusé de réception est nécessaire. Ce nombre est en fait stocké dans le champ fenêtre de l'en-tête TCP/IP.
On appelle effectivement cette méthode "méthode de la fenêtre glissante" car on définit en quelque sorte une fourchette de séquences n'ayant pas besoin d'accusé de réception, et celle-ci se déplace au fur et à mesure que les accusés de réception sont reçus.
De plus, la taille de cette fenêtre n'est pas fixe. En effet, le serveur peut inclure dans ses accusés de réception en stockant dans le champ fenêtre la taille de la fenêtre qui lui semble la plus adaptée. Ainsi, lorsque l'accusé de réception indique une demande d'augmentation de la fenêtre, le client va déplacer le bord droit de la fenêtre.
Par contre, dans le cas d'une diminution, le client ne va pas déplacer le bord droit de la fenêtre vers la gauche mais attendre que le bord gauche avance (avec l'arrivée des accusés de réception).
Fin d'une connexion |
Le client peut demander à mettre fin à une connexion au même titre que le serveur.
La fin de la connexion se fait de la manière suivante: