今天觉得网速很慢,怀疑网络中出现堵塞,于是想抓个包分析分析。看到抓包的内容下了我一跳。
很多错误报文,开始以为是中了***于是开足马力杀毒,可是杀了半天也没杀出一条病毒。经过在网上一段搜索才终于找到了问题的源头。
第一步我们再设备管理器中找到自己使用的网卡
第二步在我们使用的网卡上打开属性中的高级选项卡如图所示
我们看到【TCP/UDP 校检和】默认是开启的,只要这里设置是开启的,那么操作系统的TCP/IP协议栈完成TCP/UDP校验和的计算工作就关闭了,而是将这个工作交给网卡自己完成,如果设置关闭,那么这项工作由协议栈完成。
那问什么由操作系统的TCP/IP协议栈计算校验和就正确呢?而网卡自己计算就不对?
不知道你发现没,所有错误的包都是发送方,而接收到的包没有错误的,你想一想,网卡可是在最底层,而操作系统的协议栈与我们的协议驱动是平级的,所以我们发送的时候,捕包软件捕到的是当前协议驱动这一层的,而不是网卡的,但是校验和的计算是网卡那个地方完成,那说明我们发送的时候,根本就还没有进行检验,所以校验和还是上一次的结果,所以肯定是错的。但是如果用平级的协议栈来计算,那就捕到的时候,已经校验过了,所以没错,这也可以说明为什么接收到的包不会出现校验和错误,因为发送方肯定经过了它的网卡才发过来,所以在发送方网卡那里已经校验过了。
所以如果想抓的包都正确就把上面的功能给关掉。但这样会影响网络的性能。
转载于:https://blog.51cto.com/shutong/747702