Netzwerkprüfsumme — Änderungen 5248 → 8046

Zeile 5: Zeile 5:
 
Eine vorzeichenlose 32-Bit-Variable (uint32_t) wird für die Prüfsumme erstellt und auf null gesetzt.
 
Eine vorzeichenlose 32-Bit-Variable (uint32_t) wird für die Prüfsumme erstellt und auf null gesetzt.
 
Immer zwei benachbarte Bytes der Daten werden zu 16-Bit-Blöcken zusammengefasst.
 
Immer zwei benachbarte Bytes der Daten werden zu 16-Bit-Blöcken zusammengefasst.
−
Wenn der letzte Block weniger als 16 Bit hat (das heißt, wenn die Anzahl der Bytes ungerade ist), dann wird er von hinten mit Nullen aufgefüllt, bis er 16 Bit hat (Das heißt, das niederwertige Byte wird auf null gesetzt).
+
Wenn der letzte Block weniger als 16 Bit hat (das heißt, wenn die Anzahl der Bytes ungerade ist), dann wird er in der Berechnung von hinten mit Nullen aufgefüllt, bis er 16 Bit hat (Das heißt, das niederwertige Byte wird praktisch auf null gesetzt – die Daten für die Prüfsumme werden dabei aber nicht angetastet).
−
Nun werden alle 16-Bit-Blöcke mit Übertrag in der Prüfsummenvariable gespeichert.
+
Nun werden alle 16-Bit-Blöcke mit Übertrag addiert und das 32-Bit-Ergebnis in der Prüfsummenvariable gespeichert.
 
Anschließend werden die höherwertigen 16 Bits der Prüfsumme so lange zu den niederwertigen 16 Bits hinzuaddiert, bis die höherwertigen 16 Bits null sind (also bis kein Übertrag bei der Addition mehr entsteht).
 
Anschließend werden die höherwertigen 16 Bits der Prüfsumme so lange zu den niederwertigen 16 Bits hinzuaddiert, bis die höherwertigen 16 Bits null sind (also bis kein Übertrag bei der Addition mehr entsteht).
 
Die niederwertigen 16 Bits der Prüfsumme sind nun die eigentliche Prüfsumme, die im Prüfsummenfeld gespeichert werden kann.
 
Die niederwertigen 16 Bits der Prüfsumme sind nun die eigentliche Prüfsumme, die im Prüfsummenfeld gespeichert werden kann.