Les paquets TCP sont encapsulés dans les paquets IP. Ils se trouvent dans la partie Data begins at ... du paquet IP. Un paquet TCP se compose d'un en-tête et d'une partie contenant les données. Cette dernière peut parfois être vide; c'est le cas durant la phase de négociation. Le tableau 16 répertorie l'en-tête complet TCP/IP.
Octets (IP) | Description |
---|---|
0 | Bits 0-3: Version, bits 4-7: Internet Header Length (IHL) |
1 | Type de Service (TOS) |
2-3 | Longueur |
4-5 | Identification |
6-7 | Bits 0-3: Indicateurs (flags), bits 4-15: décalage ou offset |
8 | Temps de vie (Time To Live ou TTL) |
9 | Type |
10-11 | Somme de contrôle (checksum) |
12-15 | Adresses IP source |
16-19 | Adresses IP de destination |
20-IHL*4-1 | Options + remplissage pour grouper jusqu'à 4 octets |
Octets (TCP) | Description |
0-1 | Port source |
2-3 | Port destination |
4-7 | Numéro de séquence |
8-11 | Numéro d'accusé de réception |
12 | Bits 0-3:nombres d'octets des options supplémentaires de TCP / 4 |
13 | Contrôle |
14-15 | Fenêtre |
16-17 | Somme de contrôle (checksum) |
18-19 | Pointeur de données urgentes (urgent pointer) |
20-(20 +options * 4) | Options + remplissage pour grouper jusqu'à 4 octets |
Les données TCP commencent à IHL * 4 + 20 + options * 4 et finissent à Lentgh -1 |
Avec les machines fonctionnant sur l'internet, diverses applications communiquent souvent simultanément. Les champs intitulés Source Port et Destination Port permettent d'identifier et de distinguer chaque flux individuellement. Dans le cas d'une communication web, le port de destination (du point de vue des programmes clients) est le port 80. Donc, tout trafic sortant sera caractérisé par le nombre 80 dans ce champ. Le port source (du point de vue des programmes clients) est choisi au hasard parmi les ports inutilisés de nombre supérieur à 1024 avant que toute connexion ne soit négociée. Le numéro de port est aussi indiqué dans les paquets sortant. Deux flux ne peuvent avoir la même combinaison de numéros de port source et port destination. Le noyau utilise les numéros de port contenus dans les paquets entrant pour déterminer quelle application a requis tel ou tel paquet. La même méthode est suivie sur la machine distante.
Le numéro de séquence (Sequence Number) est le décalage de position qui caractérise un paquet particulier dans le flux de données. Le numéro d'accusé de réception (Acknowledge Number) est le point jusqu'où les données ont été reçues. Le descripteur Control consiste en divers bits indicateurs. Le descripteur Window indique la quantité maximale de données que le programme de réception est préparé à accueillir. La somme de contrôle (Checksum) permet de vérifier l'intégrité des données, et le pointeur de données urgentes (Urgent pointer) est utilisé pour interrompre le flux. Les données requises par les extensions du protocole sont ajoutées en tant qu'options à la suite de l'en-tête.