Wireshark TS | 报文长度为什么小于64?

问题背景

来自于知乎的几个问题,都是有关于 ARP 和 64 字节方面,主要如下:

  1. ARP报文长度为什么可以小于64?

  2. wireshark下抓取arp报文长度不全为42B?

  3. 为什么Wireshark抓到的ARP包长度小于64?


问题分析

以下就上述三个问题简单分析一下,首先是问题 1 和 2 :
BW64-01

为什么可以小于 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 字节


问题扩展

来自于问题 3 ,56 字节的 ARP 数据包 ??
BW-02

和正常的 60 字节的 ARP 数据包,做下对比
BW-03

之前回答问题大概分析了下,不过提问人并没有进一步反馈抓包环境,也就没有进一步求证了,权当以下是标准答案了 😎


为什么 ARP 报文长度显示是 56 ?
对比看了下源mac,一个apple,一个huawei,应该是两个设备网卡支持 802.1Q 标记与否的区别。apple 支持,所以发出来的 arp 数据包,就包含有 4 字节 的 802.1Q 标记,填充字段为 14 字节。中间过了个路由交换设备,去除 802.1Q 标记,但不会再补充填充字段。所以 56 字节组成是:

14 字节 ( Ethernet II 首部长度 ) + 42 字节 ( 28 字节 ARP 数据包 + 14 字节填充数据 ) = 56 字节


问题总结

当然不仅仅是 ARP 报文,对于以太网帧 64 或者 60 字节长度来说,数据字段最小长度要求始终是 46 字节 ,再根据不同的以太网类型和长度,决定是否需要 Padding 。




附:Wireshark function blocks

BW-04


感谢阅读,更多技术文章可关注个人公众号:Echo Reply ,谢谢。
  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值