Le calcul de la somme de contrôle TCP expliqué en plus de 128 mots

La somme de contrôle TCP (checksum), destiné au contrôle d’intégrité du paquet, utilise un pseudo-en-tête qui se compose de l’IP source d’origine, de destination, du nom de fichier réservé (identifié par 0000 0000), du protocole (x06) et de la longueur de l’en-tête TCP.

Pseudo en-tête TCP (source wikipedia)
En-tête TCP (source wikipedia)
Considérons le paquet TCP :
IP source = 192.168.0.1
IP destination = 192.168.0.2
Reserved/TCP Control = 0 / 6
Padding/Lenght = 0 / 10
TCP port source = 20
TCP port destination = 10
Numéro de séquence =11
Numéro d’accusé de réception ACK = 0
Offset / Reserved / Flag = 5 / 0 / 2 (Flag SYN)
Window = 8192
Checksum = 0
Pointeur urgent = 0
Données = “Ah” (41 68 unicode convertit en hexadecimal)
On convertit en binaire :
IP source (32 bits) = 11000000.10101000.
00000000.00000001
IP destination (32 bits) = 11000000.10101000.
00000000.00000010
Reserved/TCP Control (16 bts) = 00000000.00000110
Padding/Lenght = 0 / 10 (16 bts) = 00000000.00001010
TCP port source = 20 (16 bit) = 00000000.00010100
TCP port destination = 10 = 00000000.00001010
Numéro de séquence = 11 (32 bits)= 00000000.00000000
00000000.00001011
Numéro d’accusé de réception ACK = 00000000.00000000
Offset / Reserved / Flag
= 5 / 0 / 2 (Flag SYN) = 01010000.00000010
Window = 8192 = 01010000.00000010
Checksum = 0 = 00100000.00000000
Pointeur urgent = 0 = 00000000.00000000
Données = “Ah”
(41 68 unicode
convertit en hexadecimal) = 01000001.01101000
SOMME DE CONTROLE
à l’étape 1 (addition) = 10.10000010.00001110

L’addition binaire est basée sur les règles :

  • Règle n° 1 : 0 + 0 = 0 ;
  • Règle n° 2 : 1 + 0 = 1 ;
  • Règle n° 3 : 1 + 1 = 0 avec report de 1 ;
  • Règle n° 4 : 1 + 1 + 1 = 1 avec report de 1.

Pour additionner plusieurs nombre binaire il faut procéder par paire et effectuer des reports.

Source https://fr.wikihow.com/additionner-des-nombres-binaires

SOMME DE CONTROLE (etape 1)= 00000000.00000010.10000010.00001110

La somme calculée est alors sur 32 bits on effectue l’addition des 16 premiers bits avec les 16 derniers
Soit :

SOMME DE CONTROLE (etape 2) 00000000.00000010
+ 10000010.00001110
= 10000010.00010000

L’étape suivante est de calculer le complément à 1 du nombre binaire trouvé précédemment.
Le complément à un d’un nombre binaire est la valeur obtenue en inversant tous les bits de ce nombre (en permutant les 0 par des 1 et inversement).

SOMME DE CONTROLE = 01111101.11101111
Soit 7D EF en hexadecimal

La conversion en hexadecimal base 16 s’effectue en decomposant le nombre binaire en paquets de 4 bits soit :
0111/1101/1110/1111
7/D/E/F