为什么抓包工具所抓包抓到54字节、60字节等

为什么抓包工具所抓包抓到54字节、60字节等
关于wire shark抓到以太网包小于64字节讨论,如抓到了54字节、60字节。
用wire shark 抓网络包时,经常能看到一些数据包小于64字节。如TCP连接与断链时候就有60字节与54字节的出现。

图片.png

以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是 6 + 6 + 2 + 46 + 4 = 64。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64 字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。
当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和出错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交给“设备驱动程序”做进一步处理。这时我们抓包的软件才能抓到数据.

因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据,其最大值是6 + 6 + 2 + 1500 = 1514;最小是 6 + 6 + 2 + 46 + 4 = 64。

以上讲了除去4个字节的FCS,因此,抓包时最小就是60字节。
所以抓包抓到60字节是正常的,而且可以看到第二章图中尾部两个字节的填充是mac层做的。符合书上的知识。


以太网规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是 6 + 6 + 2 + 46 + 4 = 64。
除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64 字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节帧的时候,已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。
wireshark的机制,本地数据包,抓的是未填充数据前的包。

图片.png

为什么可以小于 64 ?
64 字节的说法,我想大家应该都知道是什么样的组成。
14 字节 ( Ethernet II 首部长度 ) + 46 字节 ( 数据字段最小长度要求 ) + 4 字节 ( CRC ) = 64 字节
因此数据字段的最小长度是 46 字节,这意味着如果是 ARP 数据包,则 46 字节的组成如下
28 字节 ( ARP 请求或应答 ) + 18 字节 ( Padding 填充数据 ) = 46 字节

为什么其中一个 ARP 报文长度显示是 42 ?
原因是 Wireshark 的抓包方式(或者说是原理,最后附简图,详细的可以看下官网说明)和位置,Wireshark 抓包位置如果是在本地,那么对于本地产生所发出的数据包,是在进网卡之前所抓取的包,而填充数据以及 CRC 一般是由网卡硬件/驱动程序完成,所以 42 字节的组成并不包含填充数据和 CRC 部分。
14 字节 ( Ethernet II 首部长度 ) + 28 字节 ( ARP 请求或应答 ) = 42 字节

为什么另一个 ARP 报文长度显示是 60 ?
综合以上,就很好理解了,60 是来自对方的 ARP 响应包,包含了填充数据 (对方网卡完成),但不含 CRC 部分 (本地网卡剥离,可以说普通网卡基本都会剥离它,Wireshark 看不到 CRC 部分)。
14 字节 ( Ethernet II 首部长度 ) + 46 字节 ( 数据字段最小长度要求 ) = 60 字节


1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 为什么抓包工具所抓包抓到54字节、60字节等

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!