数据
一些 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 数据包紧随其后。