wireshark怎么过滤长度大于 wireshark 过滤数据包长度_安卓 添加网卡驱动

01 引言

上周在公司内部做TCP/IP协议知识培训,讲到以太网数据的长度必须在46-1500字节时,突然有位同事打断成哥,说这个长度限制应该已经过时了。

他说前两天捕获数据包进行分析时看到Wireshark软件上显示的"Length"长度能达到9000多字节。

为了有图有真相,他立刻把截图发了过来。就是下图。


wireshark怎么过滤长度大于 wireshark 过滤数据包长度_安卓 添加网卡驱动_02


他有理有据的继续说,你看这个以太网数据包长度能达到9000多字节,那就说明MTU、MSS等限制也就自然没用了。

当时培训教室的气氛一度尴尬,鸦雀无声,都在等我能够做个解释,给予圆场。

成哥分析过的数据包,比他写过的代码还长,这个情况我很早之前就遇到过。正好借TCP/IP协议培训,把网卡的知识给普及一下。

这里把结论抛出来,之后我们再详细分析。

这位同事之所以看到以太网数据包能够达到9000多字节,是由于他的网络环境和数据包捕获位置所致。

在他的网络环境中,服务器具有网卡卸载能力,同时数据包默认捕获位置是在网卡卸载之前,这样他就能看到长度超过1514字节的数据包。

这和成哥讲授的TCP/IP协议理论没有冲突,只是服务器中处理IP数据包的部件发生了变化。

下面我们详细分析。

02 网卡卸载技术

(1)网卡卸载技术

在普通的计算机中,比如型号和年代较老的服务器中,IP数据包的封装、卸载及检查校验和等过程都是CPU负责运算和处理的。这种处理方式会占用一定的CPU资源。当数据流量大或网络质量不佳时,都会加重CPU的负担。据测算,传统的千兆网卡最高会消耗CPU约70%的处理能力。

为了缓解CPU的压力,可以把IP数据包的处理工作交给有计算能力的网卡,让网卡IP数据包的封装、卸载、校验及分割等工作。这种技术就叫做网卡卸载技术。

(2)分段卸载

在传统情况下,当上层应用一次传输的IP数据超过1500字节时,CPU就会对数据进行分割,确保每片交给网卡的数据都不超过1500字节。这就是分段卸载的概念。

如果网卡具有处理分段卸载的能力,CPU就可以将上层应用的原始数据包直接发给网卡,交由网卡进行分段卸载。这种网卡分段卸载的功能就做TCP分段卸载。

(3)TCP分段卸载

TCP分段卸载最大的特点就是将整个TCP/IP协议的处理能力转移到网卡硬件上,这样就可以把CPU的计算资源还给操作系统。 也就是说可以将IP层和传输层的处理任务下放到具备卸载能力的网卡上,利用网卡的TCP卸载引擎处理数据组装和传输任务。

03 数据包的捕获位置

说完了网卡卸载技术,我们来说一说数据包的捕获位置。说完大家就能完全明白这位同事的疑惑所在了。

我们这里分两种情况进行详细说明。

(1)不具备卸载功能的网卡

下图展示了在网卡不具备卸载功能的网络环境中TCP/IP协议处理IP数据流的过程。


wireshark怎么过滤长度大于 wireshark 过滤数据包长度_安卓 添加网卡驱动_03


A.我们假设上层应用一次发送的数据是6600字节。在此种环境中,TCP/IP是操作系统的一部分,CPU会执行分段卸载功能,对6600字节的数据进行分割,确保每片交给网卡的数据都不超过1500字节。

之所以需要分成五个部分,同时以太网的最大传输单元(MTU)为1500字节。如果减去20字节的IP头部和20字节的TCP头部,TCP段中的数据还剩下1460字节(这就是TCP最大段大小(MSS))。所以会将原始的IP数据分成五个部分。

B.TCP层会分别对每个部分添加IP头部,然后把数据包下发。

C.五个报文经过IP层后,都添加上IP层头部。然后把数据包下发。

D.网络驱动程序将每个IP数据包封装在以太网帧中,并将以太网帧发送到网卡。

数据包捕获位置是在网卡和网络驱动程序之间,即我们通过tcpdump或者wireshark等软件捕获到的都是以太网帧。

(2)具备卸载功能的网卡

下图展示了在网卡具备卸载功能的网络环境中TCP/IP协议处理IP数据流的过程。


wireshark怎么过滤长度大于 wireshark 过滤数据包长度_wireshark怎么过滤长度大于_04


A.我们同样假设上层应用一次发送的数据是6600字节。在此种环境中,操作系统不分割上层应用的数据,而是将用于应用数据直接添加TCP头部、IP头部,然后把数据包下发。

B.网络驱动程序将IP数据包封装在以太网帧中,并将以太网帧发送到网卡。

C.数据包捕获位置是在网卡和网络驱动程序之间,此时捕获到的以太网帧就是未进行分割的大包。

D.网卡执行分段卸载,创建一个带有各层报头的以太网帧,然后发送出去。

04 总结

虽然两种情况的分段卸载位置不同,但是通过网卡发出数据在网络链路中传输时,都是呈现出五个部分,这符合MTU和MSS理论。只是我们在进行数据包捕获时,会出现不同的现象。

--END--

@IT管理局专注计算机领域技术、大学生活、学习方法、求职招聘、职业规划、职场感悟等类型的原创内容。期待与你相遇,和你一同成长。