This exact tag decode is not a full switching model.
The inner type remains explicit
After the tag, inner EtherType 0x0800 still names the payload as IP version 4.
inner EtherType = 0 x 0800 \text{inner EtherType}=0x0800 inner EtherType = 0 x 0800
VLAN honesty boundary The inner EtherType and payload marker remain explicit after the tag. VLAN honesty boundary 160 bits / 20 bytes 0xaabbccddeeff0011223344558100002a08004500 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 byte 4 byte 5 byte 6 byte 7 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 byte 8 byte 9 byte 10 byte 11 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 byte 12 byte 13 byte 14 byte 15 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 byte 16 byte 17 byte 18 byte 19 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 dst-mac 0xaabbccddeeff (cont.) (cont.) src-mac 0x001122334455 tpid 0x8100 tci 0x002a inner-ethertype 0x0800 payload-marker 0x4500
Checked fields
The parser checks TPID, TCI, VLAN ID 42, inner EtherType, and payload marker from the pinned bytes.
VID = 42 \text{VID}=42 VID = 42
VLAN honesty boundary The inner EtherType and payload marker remain explicit after the tag. VLAN honesty boundary 160 bits / 20 bytes 0xaabbccddeeff0011223344558100002a08004500 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 byte 4 byte 5 byte 6 byte 7 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 byte 8 byte 9 byte 10 byte 11 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 byte 12 byte 13 byte 14 byte 15 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 byte 16 byte 17 byte 18 byte 19 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 dst-mac 0xaabbccddeeff (cont.) (cont.) src-mac 0x001122334455 tpid 0x8100 tci 0x002a inner-ethertype 0x0800 payload-marker 0x4500
What this does not model
NOTE: toy Ethernet VLAN header only; not switch trunk configuration, native VLANs, stacked tags, spanning tree, MTU effects, FCS, or real capture behavior.
tag bytes = 4 \text{tag bytes}=4 tag bytes = 4
VLAN honesty boundary The inner EtherType and payload marker remain explicit after the tag. VLAN honesty boundary 160 bits / 20 bytes 0xaabbccddeeff0011223344558100002a08004500 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 byte 4 byte 5 byte 6 byte 7 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 byte 8 byte 9 byte 10 byte 11 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 byte 12 byte 13 byte 14 byte 15 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 byte 16 byte 17 byte 18 byte 19 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 dst-mac 0xaabbccddeeff (cont.) (cont.) src-mac 0x001122334455 tpid 0x8100 tci 0x002a inner-ethertype 0x0800 payload-marker 0x4500
Summary
A VLAN tag inserts four bytes, TCI names the VLAN ID, and the inner EtherType still identifies the payload.
VID = 42 \text{VID}=42 VID = 42
VLAN honesty boundary The inner EtherType and payload marker remain explicit after the tag. VLAN honesty boundary 160 bits / 20 bytes 0xaabbccddeeff0011223344558100002a08004500 byte 0 byte 1 byte 2 byte 3 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 byte 4 byte 5 byte 6 byte 7 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 byte 8 byte 9 byte 10 byte 11 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 byte 12 byte 13 byte 14 byte 15 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 byte 16 byte 17 byte 18 byte 19 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 dst-mac 0xaabbccddeeff (cont.) (cont.) src-mac 0x001122334455 tpid 0x8100 tci 0x002a inner-ethertype 0x0800 payload-marker 0x4500