TCP CheckSum 计算

 

TCP校验和覆盖TCP首部和TCP数据,还要加上一个12字节的伪首部。计算时先把TCP报头中的校验和字段置为0

计算方法 把伪首部、TCP报头、TCP数据分为16位的字,如果总长度为奇数个字节,则在最后增添一个位都为0的字节。累加所有的16位字。最后结果如果有进位,把高16位移到低16位和低16位进行相加,直到高16位都为0,最后,对计算结果取反,作为TCP的校验和。

上图计算示例:

伪首部

源目的ip地址         :       a9fe   5205    a9fe  5263 

0字段和tcp协议      :      0006   

tcp头和数据长度和:       002a       (tcp 头 20B ,数据 22B)

a9fe  + 5205  +  a9fe  + 5263 + 0006 + 002a = 1f894

tcp 头需要把checksum字段置为0计算

dc2c + 2711 + 53dc + 167f + 0077 + cef9  + 5018 + 1000 + 0000 + 0000 = 29d20

数据计算

 5468 + 6973 + 2069 + 7320 + 6120 + 5443 + 5020 + 6d65 + 7373 + 6167 + 6500 = 3fe26

计算总和

1f894 + 29d20 + 3fe26 = 893da

总和大于 FFFF

893da  -》   8 +  93da = 93e2

按位取反

93e2     1001  0011  1110  0010

6c1d      0110  1100  0001  1101

报文检验和  0x6c1d , 和抓到的报文校验和一致。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值