APP下载

分析校验和的错误原因

2016-11-26

网络安全和信息化 2016年11期
关键词:接收数据网卡校验

引言:在抓包分析时,经常出现校验和错误,校验和为什么出现错误?校验和错误数据传输是否一定错误?本文详细分析校验和发生错误的原因及与数据传输的关系。

发送方在发送数据时,将发送的数据按一定的规则计算校验和,并将校验和与数据一起发送给接收方,接收方接收数据时也要计算校验和,接收的结果所有位均为1,如果累加结果中有任何比特是0,表明传输有差错。

校验和错误是数据传输错了吗?

如图1所示,图中出现了大量的校验和错误,那是不是说数据在传输的过程中一定发生了错误呢?在解决这个问题之前首先要了解系统如何进行校验和计算,TCP/IP协议栈和网卡都可以完成校验和的计算,一般情况下校验和由操作系统的TCP/IP协议栈完成,网卡的Checksum Offload属性设置有Enable和Disable两种状态,如设置为Enable则意味着网卡开启了硬件计算校验和的功能而协议栈则不再进行校验和的计算。

图1 校验和错误

对于Tx(来自Transmit一词,意为发送),Windows的协议栈将随机填充校验和,这些数据在发送之前被抓包软件捕获,在本机上抓取的数据包是随机填充的校验和,因此抓包软件会提示校验和错误,网卡会自动计算正确的校验和与数据一起发送,因此对方收到的仍然是正确的数据包。

对于Rx(来自Receive一词,意为接收),网卡在接收数据时,由网卡完成数据校验。一旦网卡由于某种原因计算失败,则由TCP/IP协议栈来完成数据校验。如果将Checksum Offload属性设置为 Disable,将关闭网卡硬件计算校验和而由协议栈完成,这样虽然在抓包软件中不再显示错误的校验和,但代价却是增加了系统的开销,降低了网络性能。

当你发现网络不畅时,不妨查看一下Checksum offload的设置,在网卡配置/高级/Rx Checksum Offload/Tx Checksum Offload中将Checksum offload设置为Disable。这也是为什么有经验的网络玩家在玩大型网络游戏出现卡顿时将Checksum offload设置为Disable的原因。

抓包软件提示校验和错误时校验和实际上并没有发生错误,而是由于开启了网卡硬件校验和功能,协议栈并没有计算校验和,只是随机填充了数据,所以抓到的包校验和是错的,而这个错误的校验和在网卡发送出去前会被网卡改正过来,接收端收到的包是校验和正确的包。

因此在发现校验和错误时不能武断的认为一定是传输出了问题,而要进一下分析,是因为Checksum offload设置的原因还是网络传输真的出现了问题。

猜你喜欢

接收数据网卡校验
使用Excel朗读功能校验工作表中的数据
部署Linux虚拟机出现的网络故障
Server 2016网卡组合模式
低复杂度多输入多输出雷达目标角度估计方法
基于LoRa的低能耗物联网技术研究
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究
单片机模拟串口数据接收程序的实现及优化
挑战Killer网卡Realtek网游专用Dragon网卡
浅谈微电子故障校验