# [Fondamentaux] TCP

## Introduction

Le **TCP** pour *Transmission Control Protocol* est un protocole réseau de la couche *Transport* du **modèle OSI.**

Il est réputé pour sa **fiabilité** puisqu'il assure **l'intégrité** des paquets.

Par conséquent, il est aussi plus lent que l'UDP.

## ![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/JqPimage.png)Composition

Voici à quoi ressemble le protocole TCP :

![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/Nxdimage.png)

- Le **sequence number** est un nombre aléatoire fixé par le système d'exploitation.
- Le **acknowledgment number** qui sera égal au numéro de séquence reçue, incrémentée de un.
- Le **window size** qui sert à définir le nombre de paquet à recevoir avant d'envoyer un *ack* en réponse.
- Le **checksum** qui est la somme de contrôle pour vérifier l'intégrité du segment.

## Three-way Handshake

Il s'agit de la procédure lors de l'établissement d'une connexion TCP standard qui se passe en trois étapes (d'où le nom).

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/M6simage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/M6simage.png)