web-dev-qa-db-fra.com

comment calculer la somme de contrôle Internet?

J'ai quelques questions sur la façon dont la somme de contrôle Internet est calculée. Je ne trouvais pas de bonne explication dans le livre, alors je la pose ici. Je ne sais pas si c'est le bon endroit pour demander, alors je suis désolé si je l'ai demandé au mauvais endroit.

Si vous regardez l'exemple suivant, les messages suivants sont envoyés: 10101001 et 00111001. La somme de contrôle est calculée avec le complément à 1. Jusqu'ici j'ai compris. Mais comment est calculée la somme? Au début, je pensais que c'était peut-être XOR, mais cela ne semble pas être le cas.

              10101001
              00111001
              --------
   Sum        11100010
   Checksum:  00011101

Et puis, quand ils calculent si le msg est arrivé correctement. Et encore une fois, comment calcule-t-on la somme?

               10101001
               00111001
               00011101
               --------
   Sum         11111111
   Complement  00000000  means that the pattern is O.K.
17
starcorn

Il utilise l'addition, d'où le nom "somme". 10101001 + 00111001 = 11100010.

Par exemple:

+------------+-----+----+----+----+---+---+---+---+--------+
| bin value  | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | result |
+------------+-----+----+----+----+---+---+---+---+--------+
| value 1    |   1 |  0 |  1 |  0 | 1 | 0 | 0 | 1 |    169 |
| value 2    |   0 |  0 |  1 |  1 | 1 | 0 | 0 | 1 |     57 |
| sum/result |   1 |  1 |  1 |  0 | 0 | 0 | 1 | 0 |    226 |
+------------+-----+----+----+----+---+---+---+---+--------+
8
Wooble

Si par Internet, vous entendez la somme de contrôle TCP La somme de contrôle est une bonne explication ici et même un code

Lorsque vous calculez la somme de contrôle, rappelez-vous que ce n'est pas seulement une fonction des données, mais également du "pseudo en-tête" qui place l'IP source, l'IP de destination, le protocole et la longueur du paquet TCP dans le données à contrôler. Cela lie les méta-données tcp à certaines données de l'en-tête IP. 

TCP/IP Illustrated Vol 1 est une bonne référence pour cela et explique le tout en détail. 

8
Paul Rubel

Le calcul de la somme de contrôle Internet utilise l’arithmétique complémentaire. Considérons que les données en cours de contrôle sont une séquence d'entiers de 8 bits. Vous devez d’abord les ajouter à l’aide de l’arithmétique de complément à un et prendre le complément du résultat.

REMARQUE: lorsque vous ajoutez des nombres, vous complétez l'arithmétique, un report du MSB doit être ajouté au résultat. Envisagez, par exemple, l’ajout de 3(0011) et de 5 (0101).

3 '-> 1100 5' -> 1010 0110 avec un report de 1 Nous avons donc 0111 (représentation du complément à 1 de -8).

La somme de contrôle est le complément à 1 du résultat obtenu à l'étape précédente. Nous avons donc 1000. Si aucun report n'existe, nous complétons simplement le résultat obtenu lors de la phase de sommation.

2
user3411417

La somme de contrôle UDP est créée du côté de l'envoi en faisant la somme de tous les mots de 16 bits du segment, tout débordement étant encapsulé, puis le complément à 1 est effectué et le résultat est ajouté au champ de somme de contrôle à l'intérieur du segment . du côté du récepteur, tous les mots du paquet sont ajoutés et la somme de contrôle y est ajoutée si le résultat est 1111 1111 1111 1111, le segment est valide, sinon le segment comporte une erreur . exmaple: 0110 0110 0110 0000 0101 0101 0101 0101

1000 1111 0000 1100

1 0100 1010 1100 0001 // il y a un débordement donc nous l'enveloppons, cela veut dire l'ajouter à la somme La somme = 0100 1010 1100 0010 maintenant prenons le complément à 1 Checksum = 1011 0101 0011 1101

chez le destinataire, la somme est calculée puis ajoutée à la somme de contrôle 0100 1010 1100 0010

1011 0101 0011 1101

1111 1111 1111 1111 // il est clair que cela devrait être la solution, si ce n'est pas le cas, il y a une erreur Références: La mise en réseau par ordinateur, une approche descendante [Ross-kurose]

0
Mohamed AbuIssa