web-dev-qa-db-de.com

wie berechne ich die Internet-Checksumme?

Ich habe einige Fragen zur Berechnung der Internet-Prüfsumme. Ich konnte keine gute Erklärung aus dem Buch finden, daher frage ich sie hier. Ich bin mir nicht sicher, ob dies der richtige Ort ist, um zu fragen, also entschuldige ich mich, wenn ich ihn an einem falschen Ort gefragt habe.

Betrachten Sie das folgende Beispiel ..__: Die folgenden beiden Nachrichten werden 10101001 und 00111001 gesendet. Die Prüfsumme wird mit dem 1-Komplement berechnet. Bisher habe ich verstanden. Aber wie wird die Summe berechnet? Zuerst dachte ich, es sei vielleicht XOR, aber es scheint nicht so zu sein.

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

Und dann, wenn sie berechnen, ob die Nachricht OK angekommen ist. Und nochmal, wie wird die Summe berechnet?

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

Es verwendet Addition, daher der Name "Summe". 10101001 + 00111001 = 11100010.

Zum Beispiel:

+------------+-----+----+----+----+---+---+---+---+--------+
| 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

Wenn Sie mit Internet-Prüfsumme TCP Prüfsumme meinen, gibt es eine gute Untersuchung hier und sogar einige Code

Wenn Sie die Prüfsumme berechnen, denken Sie daran, dass dies nicht nur eine Funktion der Daten ist, sondern auch des "Pseudo-Headers", der die Quell-IP, die Ziel-IP, das Protokoll und die Länge des TCP - Pakets in die Daten einfügt geprüft werden. Dadurch werden die TCP-Metadaten mit einigen Daten im IP-Header verknüpft. 

TCP/IP Illustrated Vol. 1 ist eine gute Referenz dafür und erklärt alles im Detail. 

8
Paul Rubel

Die Berechnung der Internet-Prüfsumme erfolgt mit einer Komplementarithmetik. Betrachten Sie die überprüften Daten als eine Folge von 8-Bit-Ganzzahlen. Zuerst müssen Sie sie mithilfe von Komplementarithmetik hinzufügen und die Komplementarität des Ergebnisses verwenden.

HINWEIS: Wenn Sie Zahlen addieren, die die Arithmetik ergänzen, muss ein Übertrag aus der MSB zum Ergebnis hinzugefügt werden. Betrachten Sie zum Beispiel den Zusatz von 3(0011) und 5 (0101).

3 '-> 1100 5' -> 1010 0110 mit einem Carry von 1 .__ So haben wir 0111 (1 Komplement Darstellung von -8).

Die Prüfsumme ist das 1er-Komplement des Ergebnisses des vorherigen Schritts. Wir haben also 1000. Wenn kein Übertrag vorhanden ist, ergänzen wir nur das in der Summierungsphase erhaltene Ergebnis.

2
user3411417

Die UDP-Prüfsumme wird auf der Sendeseite erstellt, indem alle 16-Bit-Wörter im Segment summiert werden, wobei etwaiger Überlauf umbrochen wird. Anschließend wird das 1er-Komplement ausgeführt und das Ergebnis wird dem Prüfsummenfeld im Segment hinzugefügt. auf der Empfängerseite werden alle Wörter innerhalb des Pakets hinzugefügt und die Prüfsumme wird hinzugefügt, wenn das Ergebnis 1111 1111 1111 1111 ist, dann ist das Segment gültig, ansonsten hat das Segment einen Fehler . exmaple: 0110 0110 0110 0000 0101 0101 0101 0101

1000 1111 0000 1100

1 0100 1010 1100 0001 // Es gibt einen Überlauf, also wickeln wir ihn zusammen, dh addieren Sie ihn zur Summe Die Summe = 0100 1010 1100 0010 Jetzt nehmen wir das 1-Komplement Prüfsumme = 1011 0101 0011 1101

beim Empfänger wird die Summe berechnet und zur Prüfsumme addiert. 0100 1010 1100 0010

1011 0101 0011 1101

1111 1111 1111 1111 // Dies sollte eindeutig die Antwort sein. Ist dies nicht der Fall, liegt ein Fehler vor Referenzen: Computervernetzung ein Top-Down-Ansatz [Ross-kurose]

0
Mohamed AbuIssa