Visual RFC.
ALL RFCs / RFC 1624
Read the RFC ↗
RFC 1624 / INCREMENTAL INTERNET CHECKSUM

Keep the two zero representations distinct

03

One’s-complement arithmetic has two bit patterns for zero. The older shortcut can return all ones when a fresh IPv4 header checksum calculation returns all zeros.

RFC 1624 · § 4EXAMPLE
4 / 4
Keep the two zero representations distinctThe distinct16-bit zeros are0000andFFFF. Full recomputation of CD7Aplus3285sums toFFFFand complements to0000. Old Equation2instead folds DD2Fplus5555plusCD7AtoFFFF. The final comparison admits Equation3result0000forgeneration and stops the old shortcut before storing it; it does not claim every network receiver rejects FFFF.Same arithmetic zero · different stored bitsold Eq. 2: 0xFFFFcorrect Eq. 3: 0x0000Generation choiceold shortcut: stop hereStore corrected HC′ = 0x0000
04
Keep the correction at the generation gate.

Equation 3 yields 0x0000; old Equation 2 yields 0xFFFF. Use the corrected result before storing this example’s header checksum.

Source for this drawing: RFC 1624 · Read RFC section 4 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

A numerical zero equivalence does not guarantee the same stored bit pattern.

  • 0x0000 is called +0; 0xFFFF is called −0. With a nonzero field in the IPv4 header, the generated checksum can be 0x0000 but cannot be 0xFFFF, as explained in §3.
  • The old Equation 2, HC′ = HC + m + ~m′, assumes a distributive step that fails at this zero boundary. It gives 0xFFFF for the RFC’s example instead of the fresh calculation’s 0x0000.
  • This is a computation mismatch, not a claim that every receiver rejects such a packet. Section 5 separately explains why an all-ones-sum verifier can accept either representation in this example.
DETAILS

This chapter is about the IPv4-header context used by the RFC, whose other fields ensure a nonzero sum input. Do not generalize “0xFFFF can never occur” to all possible toy buffers or to protocol-specific encodings. The rejected path means “do not generate with the old shortcut”; it is not a simulated network error.

Read the RFC section ↗

All chapters in RFC 1624

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗