Checksum: 0x7259 [incorrect, should be 0x0a75 (maybe caused by "TCP checksum offload"?)]

来源:互联网 发布:怎么做淘宝客漏洞赚钱 编辑:程序博客网 时间:2024/06/09 12:53

       今天在分析一个TCP DUP ACK的问题时,发现Server端的Wireshark抓包出现下面的错误:

       Checksum: 0x7259 [incorrect, should be 0x0a75 (maybe caused by "TCP checksum offload"?)]

        在网上查找原因,基本认为是网卡帮助Tcp协议栈处理了校验和从而发生的错误。本身校验和是Tcp协议栈来处理的,但为了提高效率,降低CPU的负担,可以将校验和的任务分担给网卡来完成,从而提高吞吐率。消除该错误的方法就是关闭网卡的校验和计算功能。

        在windows下直接通过右击网卡属性就可以进行修改:

       如果网卡支持,在高级选项里可以设置Checksum Offload是否对Rx或Tx有效,也可以设置为对两者都有效。

       在Linux下的修改方法为:

       ethtool -K eth1 rx off tx off sg off tso off

 

       从Wireshark网站上看到的处理方法:
       http://wiki.wireshark.org/CaptureSetup/Offloading?action=show&redirect=TCP_checksum_offload


       linux侧的抓包方法:
       /mnt/flash/BIN/tcpdump tcp -i ipoa_linux -w /mnt/flash/BIN/client.cap
       tcpdump -i eth0 -vv -s 0 -w active.cap

 

       这个是 Linux计算checksum的源码
       http://www.2cto.com/kf/201202/118907.html

原创粉丝点击