交换机如何区分 vlan 未标记帧和 802.1Q vlan 标记帧?

How does a switch distinguish between a vlan untagged and 802.1Q vlan tagged frames?

此处显示的是 Ethernet-II 帧(上)和 802.1Q vlan 标记帧(下): https://en.wikipedia.org/wiki/IEEE_802.1Q

我假设"parsing"一帧中的大部分工作都可以在网卡软件中完成。 交换机(或其他设备)如何区分帧是标记的还是未标记的(甚至是 802.1ad 双标记的)?

或者更确切地说,为什么设备不读取 802.1Q header 的前两个八位字节作为 EtherType/Size 字段,并继续读取其他八位字节作为帧的有效负载 (开关假设它是一个 Ethernet-II 框架)?

一个特殊的 EtherType 字段(值为 0x8100,如图所示)用于定义标记为 802.1Q vlan 的帧。 EtherType 字段随后出现在 802.1Q header 之后,在 802.1ad 实现中,它可以有另一个 802.1Q header,如下所示: https://en.wikipedia.org/wiki/IEEE_802.1ad