The toy NAT rewrite changes address fields, not the payload bytes.

highlighted = computed this step

Payload stays the same

The payload is hex 0x6869, the two bytes for hi.

payload bytes=2\text{payload bytes}=2
Payload stays the sameThe payload bytes are not rewritten by this toy NAT step.Payload16 bits / 2 bytes0x6869byte 0byte 10110100001101001payload0x6869

NAT does not edit the message body here

Only the return address fields change. The payload bytes stay pinned.

payload unchanged\text{payload unchanged}
Payload stays the sameThe payload bytes are not rewritten by this toy NAT step.Payload16 bits / 2 bytes0x6869byte 0byte 10110100001101001payload0x6869

But checksums still change

Even with the payload unchanged, source address and source port edits change checksum inputs.

checksum repair comes next\text{checksum repair comes next}
Payload stays the sameThe payload bytes are not rewritten by this toy NAT step.Payload16 bits / 2 bytes0x6869byte 0byte 10110100001101001payload0x6869

Summary

NAT rewrites where the reply should go, not the payload in this toy example.

payload length=2\text{payload length}=2
Payload stays the sameThe payload bytes are not rewritten by this toy NAT step.Payload16 bits / 2 bytes0x6869byte 0byte 10110100001101001payload0x6869