本帖最后由 Snail 于 2016-7-13 20:10 编辑
调试过程中用wireshark抓tcp包发现抓到的TCP 包会报 IP checksum error
如下图所示:
报:TCP checksum offload
网上有一篇帖子,用ethereal抓包软件也遇到类似的问题,并且说明了这个情况产生的原因:1. 在Windows平台上用Ethereal抓包时发现TCP校验和错误, 2. 但应用层的反应告诉我,这个报文的TCP校验和没问题。 3. 网卡配置->高级->Rx Checksum Offload/Tx Checksum Offload, 4. 很可能你的这两处设置是Enable,将之调整成Disable即可,代价是网络性能降低。 5. 一般由操作系统的TCP/IP协议栈完成TCP/UDP/IP校验和的计算工作, 6. 这两处设置成Enable之后,协议栈不再进行校验和的计算,而是由网卡自己完成。 7. 如果在前述位置没有发现Rx Checksum Offload/Tx Checksum Offload项, 8. 有两种可能,一种是网卡本身不支持这种功能,另一种是网卡驱动未提供配置项,后一种情形居多。 9. 事实上该问题与使用何种Sniffer软件无关。 转自:http://blog.csdn.net/wzsy/article/details/4801822
亲测wireshark win7上的遇到这个问题的解决方法如下: 把网卡的属性修改一下就可以,禁用 Checksum Offload(原理是让网卡硬件自己计算校验和,而不是交给操作系统的 tcp/ip 协议栈来计算):
禁用 Checksum Offload 后,wireshak上抓的包:
file:///C:/Users/Administrator/AppData/Roaming/Foxmail7/Temp-6276-20160711100401/Catch.jpg
|