Protocole TCP
TCP (Transmission Control Protocol) est une norme qui définit comment établir et maintenir une conversation réseau via laquelle les programmes d’application peuvent échanger des données.
Le protocole TCP fonctionne avec le protocole Internet (IP), qui définit la manière dont les ordinateurs se transmettent des paquets de données. Les deux, TCP et IP constituent les règles de base définissant Internet. Le protocole TCP est défini par l’IETF (Internet Engineering Task Force) dans le document RFC (Request for Comment) 793. Dans cet article, nous allons voire comment TCP fonctionne.
TCP est un protocole orienté connexion, ce qui signifie qu’une connexion est établie et maintenue jusqu’à ce que les programmes de chaque extrémité aient fini d’échanger des messages. Il détermine comment diviser les données de la couche application en paquets pouvant être acheminés par les réseaux, ainsi il envoie les paquets à la couche réseau, gère le contrôle de flux et il est conçu pour assurer une transmission de données sans erreur, gère la retransmission des paquets perdus ou tronqués. ainsi que l’accusé de réception(ACK) de tous les paquets qui arrivent.
Dans le modèle de communication OSI (Open Systems Interconnection), TCP couvre des parties de la couche 4(couche transport), et des parties de la couche 5(couche session).
Par exemple, lorsqu’un serveur Web envoie un fichier HTML à un client, il utilise le protocole HTTP pour le faire. Le protocole HTTP de la couche application demande au protocole TCP de la couche transport de configurer la connexion et d’envoyer le fichier. La pile TCP divise le fichier en paquets, les numérote, puis les transmet individuellement à la couche IP pour la livraison. Bien que chaque paquet a les mêmes adresses IP source et destination, les paquets peuvent être envoyés sur plusieurs routes. La couche transport de l’ordinateur client attend que tous les paquets soient arrivés, puis reconnaît ceux qu’elle reçoit et demande la retransmission si elle ne le fait pas (en fonction des numéros de paquets manquants), puis les assemble dans un fichier et envoie le fichier à la couche application de destinataire.
Exemple de transmission de données – TCP
Les segments TCP sont encapsulés dans le datagramme IP.
Segment TCP = en-tête TCP + bloc de données
Format de l’en-tête TCP
Port source (16 bits): Il identifie le port de l’application émettrice.
Le port de destination (16 bits): Il identifie le port de l’application de réception.
Numéro de séquence (32 bits):
- TCP attribue un numéro de séquence unique à chaque octet de données contenues dans le segment TCP.
- Ce champ contient le numéro de séquence du premier octet de données.
Numéro d’acquittement (32 bits):
- Il contient le numéro de séquence de l’octet que le destinataire s’attend à recevoir ensuite de l’expéditeur.
- C’est toujours le numéro de séquence du dernier octet reçu + 1.
Longueur de l’en-tête (Hlen – 4 bits) : Il contient la longueur de l’en-tête TCP.
Bits Réservés (6 bits) : Ces bits ne sont pas utilisés.
Bit URG : Le bit URG est utilisé pour traiter certaines données de manière urgente.
Bit ACK : Le bit ACK indique si le champ du numéro d’accusé de réception est valide ou non.
Bit PSH : Le bit PSH permet d’envoyer immédiatement l’ensemble du buffer à l’application réceptrice.
Bit RST : Le bit RST est utilisé pour réinitialiser la connexion TCP.
Bit SYN : Le bit SYN est utilisé pour synchroniser les numéros de séquence.
Bit FIN : Le bit FIN est utilisé pour mettre fin à la connexion TCP.
La taille de la fenêtre(16 bits) : Il indique la quantité de données (en octets) que l’expéditeur peut recevoir sans accusé de réception, et il est utilisée pour le contrôle de flux.
Checksum(16 bits) : Ce champ est utilisé pour le contrôle des erreurs. Il vérifie l’intégrité des données dans la charge TCP. L’expéditeur ajoute la somme de contrôle CRC au champ de Checksum avant d’envoyer les données.
Pointeur urgent (16 bits) :
Il indique combien de données du segment en cours comptant pour le premier octet de données sont urgentes. Ce champ est considéré comme valide et évalué uniquement si le bit URG est défini sur 1.
Options :
Le champ options est utilisé à plusieurs fins. La taille du champ varie de 0 à 40 octets.