17. IPv4 Header Checksum 重新计算
17. IPv4 Header Checksum 重新计算
IPv4 Header Checksum 不包括数据, 但包括 IP header 中的 ECN field. 当路由器改变 IP header 中的 ECN field (例如设置 CE codepoint) 时, 路由器 MUST 按照 RFC 1141 [RFC1141] 中给出的过程增量更新 IP header checksum. RFC 1141 指出, 在原字段值为 m 而新值为 m' 的情况下, HC (header checksum) 调整如下:
HC' = ~(~HC + ~m + m')
对于 8-bit 字段, 使用原值和新值, 并将其零扩展到 16 bits. 对于 16-bit 字段, m 和 m' 被视为 16-bit 整数. 加法使用 ones complement arithmetic, 即进位被加到和的最低有效位.
由于 ECN field 只包含 TOS byte 的两个最低有效位, 最简单的做法是将旧 TOS byte 值作为 m, 将新 TOS byte 值作为 m'.
IPv6 不需要重新计算 checksum, 因为 IPv6 header 不包含 header checksum.