Une fois que le protocole TCP établit une session, il peut alors effectuer le suivi de la conversation dans cette session. En raison de la capacité de suivi des conversations réelles du protocole TCP, ce dernier est considéré comme un protocole avec état. Un protocole avec état est un protocole qui contrôle l'état de la session de communication. Par exemple, lorsque les données sont transmises à l'aide du protocole TCP, l'expéditeur s'attend à ce que la destination accuse réception des données. Le protocole TCP suit les informations qu'il a envoyées et sait quelles informations ont été reçues. Si aucun accusé de réception n'est reçu, l'expéditeur suppose que les données ne sont pas arrivées et les renvoie. La session avec état commence par l'établissement d'une session et se termine lorsque la session est interrompue.
Remarque : la mise à jour de ces informations d'état nécessite des ressources qui ne sont pas nécessaires pour un protocole sans état, tel que le protocole UDP.
Le protocole TCP implique une surcharge pour bénéficier de ces fonctionnalités. Comme l'illustre la figure, chaque segment TCP utilise 20 octets dans l'en-tête pour encapsuler les données de la couche application. C'est bien plus qu'un segment UDP, qui ne représente que 8 octets de surcharge. Cette surcharge comprend :
- Un numéro d'ordre (32 bits) – utilisé pour réorganiser les données.
- Un numéro d'accusé de réception (32 bits) – indique les données qui ont été reçues.
- Le champ Longueur d'en-tête (4 bits) – connue sous le nom de « décalage de données ». Indique la longueur de l'en-tête du segment TCP.
- Le champ Réservé (6 bits) - champ réservé pour les futures évolutions.
- Des bits de contrôle (6 bits) – comprennent des codes de bits, ou indicateurs, indiquant l'objectif et la fonction du segment TCP.
- La taille de fenêtre (16 bits) – indique le nombre de segments qui peuvent être acceptés en même temps.
- La somme de contrôle (16 bits) – utilisée pour le contrôle des erreurs sur l'en-tête et les données de segment.
- Le champ Urgent (16 bits) – indique si les données sont urgentes.
Le protocole TCP est par exemple utilisé par les navigateurs Web, les messageries et les applications de transfert de fichiers.