Header checksum: 0x0000 [incorrect, should be...]

本文探讨了使用Wireshark捕获数据包时遇到的校验和问题,并解释了这是由于现代网络适配器使用TCP/IP校验和卸载功能所导致。文章提供了禁用该功能的方法。

wireshark抓自己发出去的包的时候碰到这个问题,以为是程序的问题,可是接收方却说收到的包一点问题都没有。奇怪了,到网上一搜,长见识了。

http://forums.whirlpool.net.au/forum-replies-archive.cfm/1265837.html

a lot of modern network cards use TCP/IP checksum offloading, inwhich case Windows doesn't bother generating a checksum for eachoutbound packet and the network card adds them just beforetransmission.

This reduces the amount of work that the computer's CPU has todo, but the problem is that Wireshark can only intercept packets atthe OS level, and hence thinks the checksums are invalid (when infact the problem is that they haven't been added yet).

大意就是操作系统偷懒,把计算校验和的工作扔给了网卡,网卡在包发出去才加上校验和,wireshark在OS层抓包的时候,包的校验和还没被添加,是0x0000,于是认为headerchecksum incorrect。

想让OS自己加校验和,怎么办呢?

http://support.microsoft.com/kb/904946

要变通解决此问题,关闭将卸载网络适配器上的校验和。若要这样做,请按照下列步骤操作:

  1. 单击 开始、单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 在右窗格中确保 DisableTaskOffload 注册表项存在。如果此项不存在,请按照下列步骤以将项添加操作:
    1.  编辑 菜单上指向 新建,然后单击 DWORD值
    2. 键入 DisableTaskOffload,然后按ENTER 键。
  4. 单击 DisableTaskOffload
  5.  编辑 菜单上单击 修改
  6.  数值数据 框中键入 1,然后按ENTER 键。
  7. 退出注册表编辑器。

可是,我在win7下改了也没用,莫非要重启机器?不懂ing

 

果然,重启后正常了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值