Transmission Control Protocol – Protocole de transport de l’architecture TCP/IP, notamment utilisé dans le monde Internet. Protocole de niveau 4 fonctionnant en mode connecté. Il opère avec le protocole IP et permet de résoudre des problèmes de perte de niveau inférieur.TCP 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:
- TCP permet de remettre en ordre les datagrammes en provenance du protocole IP
- TCP permet de vérifier le flot de données afin d’éviter une saturation du réseau
- TCP permet de formater les données en segments de longueur variable afin de les « remettre » au protocole IP
- TCP permet de multiplexer les données, c’est-à-dire de faire circuler simultanément des informations provenant de sources (applications par exemple) distinctes sur une même ligne
- TCP permet enfin l’initialisation et la fin d’une communication de manière « courtoise »
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 mode connecté, 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, 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.
TCP permet d’effectuer une tâche importante: le multiplexage/démultiplexage. Ces opérations sont réalisées grâce au concept de ports (ou sockets). Un numéro est 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.
- L’entête d’un segment TCP est constitué comme suit:
o Port Source (16 bits): Port relatif à l’application en cours sur la machine source
o Port Destination (16 bits): Port relatif à l’application en cours sur la machine de destination
o Numéro d’ordre (32 bits): Lorsque le drapeau SYN est à 0, le numéro d’ordre est celui du premier mot du segment en cours. Lorsque SYN est à 1, le numéro d’ordre est égal au numéro d’ordre initial utilisé pour synchroniser les numéros de séquence (ISN)
o Numéro d’accusé de réception (32 bits): Le numéro d’accusé de réception également appelé numéro d’acquittement correspond au numéro (d’ordre) du prochain segment attendu, et non le numéro du dernier segment reçu.
o Décalage des données (4 bits): il permet de repérer le début des données dans le paquet. Le décalage est ici essentiel car le champ d’options est de taille variable
o Réservé (6 bits): Champ inutilisé actuellement mais prévu pour l’avenir
o Drapeaux (flags) (6×1 bit): Les drapeaux représentent des informations supplémentaires:
o URG: si ce drapeau est à 1 le paquet doit être traité de façon urgente.
o ACK: si ce drapeau est à 1 le paquet est un accusé de réception.
o PSH (PUSH): si ce drapeau est à 1, le paquet fonctionne suivant la méthode PUSH.
o RST: si ce drapeau est à 1, la connexion est réinitialisée.
o SYN: Le Flag TCP SYN indique une demande d’établissement de connexion.
o FIN: si ce drapeau est à 1 la connexion s’interrompt.
o Fenêtre (16 bits): Champ permettant de connaître le nombre d’octets que le récepteur souhaite recevoir sans accusé de réception
o Somme de contrôle (Checksum ou CRC): La somme de contrôle est réalisée en faisant la somme des champs de données de l’en-tête, afin de pouvoir vérifier l’intégrité de l’en-tête
o Pointeur d’urgence (16 bits): Indique le numéro d’ordre à partir duquel l’information devient urgente
o Options (Taille variable): Des options diverses
o Remplissage: On remplit l’espace restant après les options avec des zéros pour avoir une longueur multiple de 32 bits
o Les données.
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 permettant au client et au serveur de s’assurer de la bonne réception mutuelle des données. 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 accusé de réception) accompagné d’un numéro d’accusé de réception égal au numéro d’ordre 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 d’ordre qu’il s’agit d’un doublon et ne conservera que le dernier segment arrivé à destination.
