0000   00 1c 25 7a 27 50 00 1a 6b 36 46 37 08 00 45 00  ..%z'P..k6F7..E.     00 1c 25 7a 27 50 Dest MAC   00 1a 6b 36 46 37 Src MAC
0010   00 3c 11 46 40 00 80 06 66 22 c0 a8 01 01 c0 a8  .<[email protected]"......          66 22 这个是CheckSum
0020   01 02 04 df 46 8c 70 45 a7 0e 31 d6 9e fc 50 18  ....F.pE..1...P.
0030   ff eb 83 82 00 00 48 44 4d 50 00 01 00 00 00 01  ......HDMP......     48 44 4d 50 数据区从这里开始
0040   02 00 00 00 00 00 00 00 00 30                    .........0我使用Ethereal抓包,发现这个包有TCP Checksum Incorrect的问题这个数据包是我自己发出的,发送时仅发送最后的20个字节,也就是从48 44 4d 50 (HDMP)开始。

解决方案 »

  1.   

    不对会不会重发呢?TCP协议能够保证数据的完整性。
      

  2.   

    重发也是一样的错误请问需要去计算CheckSum吗?
    不是仅发送Data部分吗?
    如何涉及CheckSum?
      

  3.   

    CheckSum好像是由网卡或者TCP发送程序自动完成的,无需通过程序计算请问Ethereal是在本机抓的数据包还是在目标机器上抓得数据包?假设CheckSum由网卡完成,Ethereal如果是在网卡之前抓的与网卡之间的通信数据,则CheckSum还没有开始计算的,当然是错误的了
      

  4.   

    在Ethereal所在的PC上发生这种问题,有可能是网卡驱动的TCP checksum offloading功能打开了,关闭即可。
    参见http://www.ethereal.com/lists/ethereal-dev/200406/msg00090.html