Checksum v3
Checksum v3
My previous explanation of how the UDP checksum worked was incorrect. Here is the correct version.
1.
2.
3.
1 0 0 0 1 0 0 1 Word 1
1 0 1 1 1 0 0 0 Word 2
------------------------------------1 0 1 0 0 0 0 0 1 Normal Sum (note carry to remove)
1 Remove carry and add it back
------------------------------------0 1 0 0 0 0 1 0 1s complement sum
0 0 1 0 1 0 0 1 Word 1
1 0 1 1 1 0 0 0 Word 2
--------------------------------1 1 1 0 0 0 0 1 1s complement sum
Checksum example
10001001
11110000
00111100
10100001
Input Word 1
Input Word 2
Input Word 3
Input Word 4
1 0 0 0 1 0 0 1 W1
1 1 1 1 0 0 0 0 W2
--------------------------------------------------------------------1 0 1 1 1 1 0 0 1 Normal sum
1 Carry
--------------------------------------------------------------------0 1 1 1 1 0 1 0 1s Comp sum W1, W2
0 0 1 1 1 1 0 0 W3
--------------------------------------------------------------------1 0 1 1 0 1 1 0 1s Comp sum W1, W2, W3
1 0 1 0 0 0 0 1 W4
--------------------------------------------------------------------1 0 1 0 1 1 0 0 1 Normal sum
1 Carry
--------------------------------------------------------------------0 1 0 1 1 0 1 0 1s Comp sum W1, W2, W3, W4
1 0 1 0 0 1 0 1 complement
= checksum of W1-W4