Les différents composants ou champs de l’en-tête du protocole TCP sont divisés comme suit :
Port Source (16 bits) : indique le numéro de port de l’expéditeur.
Port Destination (16 bits) : indique le numéro de port du destinataire.
Numéro de séquence (32 bits) : au choix, le numéro de séquence indique le premier octet des données utiles jointes ou est envoyé lors de la procédure d’activation ou de désactivation de la connexion. Il sert également à la validation et au tri (au terme de la transmission) des segments.
Numéro d’accusé de réception (32 bits) : ce champ indique le numéro de confirmation attendu par l’expéditeur. Un Flag ACK doit être activé pour assurer sa validité (au champ « Flags »).
Offset (4 bits) : le champ « Offset » indique la longueur de l’en-tête TCP en blocs de 32 bits pour mettre en avant le point de départ des données utiles. Celui-ci peut varier de segment en segment en fonction du champ Options variable.
Réservé (6 bits) : RFC 793, réservé pour utilisation ultérieure, jusqu’ici non utilisé. Ce champ doit toujours indiquer la valeur « 0 ».
Flags (6 bits) : Les 6 bits individuels disponibles au champ Flags permettent d’activer différentes actions TCP visant l’organisation de la communication et de la transmission de données. Les Flags suivants peuvent être activés ou désactivés ici :
- URG : le Flag « Urgent » signale à l’application TCP que les données utiles doivent immédiatement être traitées jusqu’au pointeur Urgent (voir ci-dessous).
- ACK : Combiné au numéro de confirmation, le Flag ACK accuse réception des paquets TCP. Lorsque le Flag est désactivé, le numéro de confirmation est automatiquement invalidé.
- PSH : le Flag « Push » garantit qu’un segment TCP soit immédiatement mis à disposition sans atterrir d’abord dans la mémoire tampon de l’expéditeur et du destinataire.
- RST : en cas d’erreur pendant la transmission, un paquet TCP portant le Flag RST (« Reset ») permet de réinitialiser l’application.
- SYN : les messages portant un Flag SYN sont la première étape du 3-Way Handshake. Ils initient donc l’activation de la connexion.
- FIN : le Flag « Finish » signale à son vis-à-vis qu’un partenaire de communication a achevé la transmission.
Taille de fenêtre (16 bits) : ce champ indique aux partenaires de communication le nombre d’octets que l’expéditeur est prêt à recevoir.
Total de contrôle (16 bits) : le Transmission Control Protocol est doté d’une fonction fiable de détection des erreurs de transmission. Pour ce faire, il utilise la somme de contrôle calculée à partir de l’en-tête, des données utiles et du pseudo-en-tête.
Pointeur d’urgence (16 bits) : le pointeur d’urgence indique la position du premier octet suivant les données utiles à traiter de manière urgente. Ce champ est uniquement valide et pertinent lorsque le Flag URG est activé.
Options (0–320 bits) : le champ Options permet de préparer l’exécution de fonctions TCP ne se trouvant pas dans l’en-tête général, la définition de la longueur de segment maximum par exemple. La longueur des options doit toujours être un multiple de 32 bits. Dans le cas contraire, il faut la compléter de bits nuls (Padding).