为什么我通过我的中间层驱动从上层直接接受的TCP包将它拦截下来,传给应用层处理,然后又通过IRP再通过中间层驱动发送到网络上时,有些机器会出现TCP CheckSum Error,但是有些机器又不会出现,不太明白为什么?怎么办?
回复(2) 2008-10-25 10:15 来自版块 - NDIS网络接口开发
表情
zhangfresh我也碰上这个问题,好像Win2003、Vista、Win7的系统,不需要中间层计算checksum的。 如果改变报文内容,再计算checkshum,网卡驱动还会再算一次,结果checksum都是0,是错的。 不知道这些操作系统是不是都不要中间层操心这个。(2011-01-10 14:07)
needsun这个问题可以通过一个简单的方法去试一下,收到包后再重新计算TCP的校验码.我就是这样做的.不过我还也遇到一个问题,尽管在收到包后重新计算了校验和,但有些TCP包接收还是出现错误,但在绝大部分情况下是没有问题的.(2008-11-04 10:29)

返回顶部