本文主要介绍基于IPv6的TCP 中2个bytes的checksum 计算方法。读者可根据此计算方法编写自动计算脚本。
根据RFC9293 规定,TCP的Header格式如下,其中Checksum 占2 个bytes.
TCP 的Checksum 计算内容包含伪头部(Pseduo-Header) 和TCP Header 两部分。其中TCP Header 格式如上图所示, IPv6伪头部共320bits,格式参考RFC8002, 如下图所示
IPv6 Pseduo-Hearder Format
计算方法:
Step1: 将伪头部和TCP 头部数据组成16bits 数组累加,注意checksum 设为0000
Step2: 累加的结果如果超过2个bytes,则低位2个bytes 与高位的byte 相加,按照此规则反复相加直到结果是2个bytes。
Step3: Step2 的结果按位取反,结果就是Checksum 的值。
举例:
以DoIp 指令 10 03 为例, 可通过Vector 或者wireshark的查看数据流.
IPv6 伪头部数据:
Source Address: FD 24 7C BB 02 82 00 06 00 00 00 00 00 00 00 10
<