IP/TCP/UDP中Checksum的计算

IP Header Checksum

  IP Header Checksum顾名思义,只计算IP头部字段的校验和,参照《计算机网络——自顶向下方法:第四版》中的说法,IP Header Checksum的计算方法——通过IP Header生成Checksum——为:

  1. 计算前把Checksum字段置0;
  2. 将IP Header中每两个连续的字节当成一个16bit数,对所有的16bit数进行求和,在求和过程中,任何溢出16bit数范围的求和结果都需要进行回卷——将溢出的高16bit和求和结果的低16bit相加;
  3. 对最终的求和结果按位取反,即可得到IP Header Checksum

  IP Header Checksum的验证方法为:

  1. 只需进行Checksum计算中的第二步,若最终结果为0xFFFF则说明IP Header无差错。

TCP/UDP Checksum

  TCP/UDP Checksum的计算方法和IP Header Checksum的计算方法类似,不同点如下:

  1. TCP/UDP的有效载荷(payload)会参与Checksum的计算;
  2. TCP/UDP会额外将一个伪首部加入计算,伪首部包括:32bit的源/目的IP地址,8bit的补零,8bit的协议号,以及16bit的TCP/UDP报文长度(头+数据)
  3. 在计算过程中,TCP/UDP报文总字节数可能为奇数,最后剩余的单个字节直接和中间结果相加(相当于高8bit补0)pseudo header

!!!注意:计算/验证Checksum时,都是对网络字节序表示的数据包直接进行计算

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值