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

Bound the implementation and its promises

05

A wider machine accumulator still has to implement sixteen-bit complements and repeat carry folding. A checksum update follows the changed word; it does not prove authenticity or define every transport’s checksum encoding.

RFC 1624 · § 3EXAMPLE
4 / 4
Bound the implementation and its promisesA correct no-op update with HC0000,old5555,new5555folds1FFFEtoFFFFthen complements0000. Incrementing newwordto5556makes raw1FFFF, requiring folds10000then0001and resultFFFE. A chosen20-byte IPv4 header changes only TTL64to63and its checksum, with Protocol6unchanged; incremental result equals full recomputation. A separate toy word-swap collision produces the same checksumFFFCfor0001,0002and0002,0001. Held errata are not promoted to approved requirements.Separate implementation and limit examplestoy words: 0x0001, 0x0002sum 0x0003 · checksum 0xFFFCtoy words: 0x0002, 0x0001sum 0x0003 · checksum 0xFFFCDifferent content · same checksumError detection is not sender authentication
04
Reset: see what the checksum cannot distinguish.

Toy words0x0001,0x0002 and0x0002,0x0001 both sum to3 and produce0xFFFC. Matching checksums do not authenticate content or its sender.

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

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

Keep the arithmetic width, covered bytes and security purpose explicit.

  • Limit every complement to 16 bits. Fold high carry bits back until none remain; one fold is not always enough for three summed words. These are the one’s-complement arithmetic operations used by the RFC, not ordinary truncation.
  • The unchanged-value case remains valid with correct arithmetic: HC=0x0000, m=m′=0x5555 updates to 0x0000. Do not invent a prohibition on a no-op replacement from an unapproved erratum.
  • The errata list has three Held for Document Update reports (4782, 5864, 5865), not verified corrections. Their discussion concerns no-op arithmetic, repeated carries and complement width; the drawing demonstrates the underlying arithmetic without promoting their proposed text to an approved requirement.
DETAILS

The TTL (Time to Live) example edits one byte in its 16-bit word together with the unchanged Protocol byte; header bytes are in network order. The chosen fixture shows only the 20-byte IPv4 header: Total Length40 includes 20 payload bytes not shown, and this checksum covers the header only. Source192.0.2.10 and destination198.51.100.20 are documentation addresses, not live hosts. Equation 4 is a recommended alternative with borrow semantics; no machine-speed benchmark is claimed. RFC 1624 §8 does not discuss security. The separate collision example is a direct mathematical consequence of the checksum sum, not a cryptographic design or a live attack.

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 ↗