# How are Internet Checksums Calculated?

The means of calculating the Internet checksum are outlined by the 1988 RFC1071 and can be summarized as such:

1. Convert data into a series of 16-bit integers;
2. Calculate the sum of all 16-bit integers, allowing for carry bit wrap around;
3. Take the 1’s complement of the final sum (flip the bits)

# What are Internet Checksums Used For?

This value is then put into the header of a data segment sent across the network. When the segment reaches its final destination, the receiving machine can verify the integrity using the checksum as such:

1. Convert the data segment into a series of 16-bit integers;
2. Calculate the sum of all 16-bit integers, allowing for carry bit wrap-around;
3. Add the checksum to the final sum total;
4. If the final total is all 1’s the data is validated;
5. If any 0’s are detected the data has been corrupted.

# How are Internet Checksums Validated?

Checksum calculation is a very straight-forward means of verifying transmitted data. The use of binary arithmetic allows some additional flexibility as well, as noted in the original RFC:

1. Sum calculation can be done the same regardless of machine endian-ness;
2. byte-swapping can be used to avoid word-boundary issues;
3. parallel summation possible on 32-bit machines (32 was modern at the time)
4. Deferral of carry bits
5. Combination of checksumming and data copying;

Note: Step #6 was updated in the later RFC1141

# Step-by-Step Breakdown

The theory of checksum calculation accounts for lots of use cases and can get quite complex for those unfamiliar with its implications. Below is a simple illustration of how the checksum can be calculated for a data segment of 8 bits, separated into 2 4-bit words.