![为什么某些 VLAN Wireshark 捕获在 IPv4 负载后包含数据?](https://linux22.com/image/686380/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9F%90%E4%BA%9B%20VLAN%20Wireshark%20%E6%8D%95%E8%8E%B7%E5%9C%A8%20IPv4%20%E8%B4%9F%E8%BD%BD%E5%90%8E%E5%8C%85%E5%90%AB%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
数据
一些 Cloudshark 捕获显示 vLAN 的“尾部”,而有些则没有。
捕获
问题
为什么一些 并非所有VLAN Wireshark 捕获是否包含 IPv4 有效负载之后的数据?
答案1
如何通过读取标头准确预测带有 vLAN 标签的 IPv4 数据包的大小?
IPv4 数据包的报头中没有 VLAN 标记。只有以太网帧(第 2 层)报头才有 VLAN 标记。IPv4 数据包(第 3 层)是帧的有效负载,IPv4 数据包报头对帧报头中的内容一无所知。这是网络中的两个独立层,IPv4 可以由任意数量的第 2 层协议承载,同时对所使用的第 2 层协议一无所知。
如果您想知道 IPv4 数据包的大小,您可以在 IPv4 数据包头中查找“总长度”字段(IPv4 数据包头的第三和第四个八位字节)。
答案2
看https://wiki.wireshark.org/以太网和https://wiki.wireshark.org/VLAN
如果类型/长度字段是:
- 0 - 1500:长度字段(IEEE 802.3 和/或 802.2)
- 0x0800:IP(v4),互联网协议版本 4
- 0x0806:ARP,地址解析协议
- 0x8100:IEEE 802.1Q帧
- 0x86dd:IPv6,互联网协议版本 6
因此,如果类型/长度字段为 0x8100,则以太网帧在类型/长度字段后包含 VLAN 标记。跳过 2 个字节,并将接下来的 2 个字节视为类型。对于 IPv4,该字节为 0x0800,您的 IPv4 数据包紧随其后。