top of page

Le Protocole TCP

  • Photo du rédacteur: Christine Gnama Sakouvogui
    Christine Gnama Sakouvogui
  • 9 avr. 2020
  • 3 min de lecture

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 :


  • 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


ree


Fonctionnement de TCP

Une session TCP fonctionne en trois phases :

  • l'établissement de la connexion ;

  • les transferts de données ;

  • la fin de la connexion.

Structure d'un segment TCP


ree

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 de l'en-tête en mots de 32 bits (les options font partie de l'en-tête)

  • Indicateurs ou Flags :

    • Réservé : réservé pour un usage futur

    • ECN/NS : signale la présence de congestion, voir RFC 31683 ; ou Nonce Signaling, voir RFC 35404

    • CWR : Congestion Window Reduced : indique qu'un paquet avec ECE a été reçu et que la congestion a été traitée

    • ECE : ECN-Echo : si SYN=1 indique la capacité de gestion ECN, si SYN=0 indique une congestion signalée par IP (voir RFC 3168)

    • 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 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 d'octets que le récepteur souhaite recevoir sans accusé de réception

  • Somme de contrôle : somme de contrôle calculée sur l'ensemble 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

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 une '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 :

  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 "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


ree

Commentaires


© 2020 tout droit réserver Christine Gnama Sakouvogui

  • Facebook Black Round
  • Tumblr Black Round
bottom of page