Computing an ICMP checksum blanks the checksum word before summing.

highlighted = computed this step

Computing leaves one word blank

To compute the checksum, the checksum word is treated as zero. Then the complement of the folded sum becomes the checksum field.

checksum word index=1\text{checksum word index}=1
Compute ICMP checksumCompute mode zeroes the checksum word and recomputes the field.Request compute - compute zero word 1rowindexvalueword00x0800word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001a35folded0x1a35result0xe5caReply compute - compute zero word 1rowindexvalueword00x0000word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001235folded0x1235result0xedca

Compute the request checksum

With the request checksum word zeroed, the computed checksum is 0xe5ca.

request checksum=0xe5ca\text{request checksum}=0xe5ca
Compute ICMP checksumCompute mode zeroes the checksum word and recomputes the field.Request compute - compute zero word 1rowindexvalueword00x0800word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001a35folded0x1a35result0xe5caReply compute - compute zero word 1rowindexvalueword00x0000word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001235folded0x1235result0xedca

Compute the reply checksum

With the reply checksum word zeroed, the computed checksum is 0xedca. The type byte changed, so the checksum changed too.

reply checksum=0xedca\text{reply checksum}=0xedca
Compute ICMP checksumCompute mode zeroes the checksum word and recomputes the field.Request compute - compute zero word 1rowindexvalueword00x0800word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001a35folded0x1a35result0xe5caReply compute - compute zero word 1rowindexvalueword00x0000word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001235folded0x1235result0xedca

Summary

Compute mode proves the pinned checksum fields are derived from the exact ICMP bytes with the checksum word blanked.

zeroed word=1\text{zeroed word}=1
Compute ICMP checksumCompute mode zeroes the checksum word and recomputes the field.Request compute - compute zero word 1rowindexvalueword00x0800word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001a35folded0x1a35result0xe5caReply compute - compute zero word 1rowindexvalueword00x0000word10x0000 (zeroed)word20x1234word30x0001raw sum0x00001235folded0x1235result0xedca