checksum error

        这几天用Wireshark(以前叫Ethereal)抓包时发现很多包都有checksum error,后来随便归纳了一下,做个记录。
        通过计算checksum可以检验网络上传输的数据包(TCP/UDP)在传输中有没有出错,以前这个计算是有系统来做的,因此网络数据量大的时候就比较消耗CPU,现在很多网卡都可以自己计算这个值了,这样就减轻了CPU的负担,提高了网络性能。这样一来有时候某些抓到的数据包就会有checksum error,因为有的包还没经过网卡来处理,未计算checksum就被抓包工具截获了,这个时候就会显示checksum error,实际上这个就是假error了。但是这种情况只是在某些情况下会出现,如何判断到底是不是假error,从2个方面来验证:首先看你的网络功能是否正常,比如你http访问一个网站,抓包工具在抓本机的http包,如果你能正常的完全打开这个网站,并确定这个网站没有被浏览器缓存,但是抓包工具上显示的http包有checksum error,那就是假error。其次你可以在同一网络的其他节点上抓你自己机器上的数据包,这样假error就不会存在了,因为你在其他节点上抓的(非本机)数据包是一定经过了机器网卡处理的,就是说checksum已经计算过了,如果这个时候还有checksum error,那就是真有丢包了。
         关掉网卡的自身的checksum计算也可以避免这个问题,但是这样网络性能会降低,因为所有的checksum计算都会丢给系统的CPU去做。
         Windows平台下关掉checksum计算:设备管理器->网卡配置->高级,在这个对话框里面就可以设置RX checksum Offload/TX checksum offload。
         UNIX/Linux平台下关掉checksum计算:/sbin/ethtool -K(大写) eth0(网卡名) rx off tx off。查看网卡该选项是否打开:/sbin/ethtool -k(小写) eth0(网卡名)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值