【wireshark】Ethereal抓包时发现TCP校验和or检查和错误的原因

今天用Ethereal抓包,抓了之后发现无论无何,都有一些错误的包,但是一分析,那些包却应该是对的,而且也正确的发出去了,后来在网上找了一些资料,终于明白了:

如果发现我们的包出错,但它却能正确的发送出去,那么请按以下步骤检查以下:

第一步:打开设备管理器

第二步:选择当前使用的网卡,双击,打开高级:

 

一般这个选项都是开启的,我们只需将它设置为关闭就可以了,不过这样会导致速度变慢。

Q1:为什么我们把它设置为关闭,就可以使捕到的校验和正确了???

A1:原因是这样的,如果我们把它设置为开启,那么操作系统的TCP/IP协议栈完成TCP/UDP/IP校验和的计算工作就关闭,而是将这个工作交给网卡自己完成,如果设置为关闭,那么这项工作由协议栈完成。

Q2:为什么由操作系统的TCP/IP协议栈计算校验和就正确呢?而网卡自己计算就不对?

A2:不知道你发现没,所有错误的包都是发送方,而接收到的包没有错误的,你想一想,网卡可是在最底层,而操作系统的协议栈与我们的协议驱动是平级的,所以我们发送的时候,捕包软件捕到的是当前协议驱动这一层的,而不是网卡的,但是校验和的计算是网卡那个地方完成,那说明我们发送的时候,根本就还没有进行检验,所以校验和还是上一次的结果,所以肯定是错的。但是如果用平级的协议栈来计算,那就捕到的时候,已经校验过了,所以没错,这也可以说明为什么接收到的包不会出现校验和错误,因为发送方肯定经过了它的网卡才发过来,所以在发送方网卡那里已经校验过了。

举一个例子:

第一种:当使用协议栈进行校验和计算:

A(协议驱动)--------------->B(网卡)

在A捕包,在A计算校验和,所以校验和正确

第二种:当使用网卡进行校验和计算:

A(协议驱动)--------------->B(网卡)

在A捕包,在B计算校验和,所以捕包的时候还没有计算校验和,校验和是上一次的内容,所以校验和错误

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值