Why is the TCP checksum inverted?

Randomblue asked:

From the Wikipedia page:

The checksum field is the 16 bit one’s complement of the one’s complement sum of all 16-bit words in the header and text.

Why, after summing the 16-bits in the header and text, is the one’s complement taken to compute the TCP checksum?

My answer:


One’s complement arithmetic was used because TCP was designed in the 1970s for 1970s computers, most of which used one’s complement arithmetic. The rise of two’s complement arithmetic, which modern computers use, didn’t really begin in earnest until the personal computers of the late 1970s and 1980s.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.