Ethernet
Layer 2 — the protocol that connects everything on a LAN
Ethernet Frame Structure
Every piece of data that moves across a local network is wrapped in an Ethernet frame. The frame provides addressing (who sent this, who should receive it), payload carriage, and error detection. Understanding the byte-level layout is essential for packet captures and debugging network issues.
Field-by-Field Breakdown
- Preamble (7 bytes) — An alternating pattern of
10101010repeated 7 times. Allows the receiving NIC's clock to synchronize with the sender's bit timing. Not part of the frame proper — it's a physical-layer artifact. - SFD — Start Frame Delimiter (1 byte) — The pattern
10101011. The final11signals "the real frame starts now." Together with the preamble, that's 8 bytes of synchronization overhead. - Destination MAC (6 bytes) — The intended recipient. Can be unicast (one host), multicast (group), or broadcast (
FF:FF:FF:FF:FF:FF). - Source MAC (6 bytes) — The sender's hardware address. Always unicast — a broadcast source makes no sense.
- EtherType / Length (2 bytes) — If the value is
≥ 0x0600(1536), it's an EtherType identifying the upper-layer protocol. If≤ 0x05DC(1500), it's a length field (IEEE 802.3 format). In practice, you'll almost always see EtherType values. - Payload (46–1500 bytes) — The encapsulated data (typically an IP packet). Minimum 46 bytes — if the actual data is shorter, the frame is padded to meet the minimum frame size of 64 bytes (required for collision detection in half-duplex Ethernet).
- FCS — Frame Check Sequence (4 bytes) — A CRC-32 checksum computed over the destination MAC, source MAC, EtherType, and payload. The receiver recalculates and silently drops frames with mismatched FCS. No retransmission at Layer 2 — that's TCP's job.
Note
Wire vs. Wireshark: You won't see the Preamble, SFD, or FCS in a typical Wireshark capture. The NIC strips those before handing the frame to the OS. What Wireshark shows you is the 14-byte header (Dest MAC + Src MAC + EtherType) plus the payload. Keep this in mind when calculating frame sizes on the wire vs. in captures.
MAC Addresses
A MAC (Media Access Control) address is the Layer 2 hardware address burned into every network interface. It's what switches use to forward frames — IP addresses are irrelevant at this layer.
MAC Address Structure — 48 bits (6 bytes)
- OUI (Organizationally Unique Identifier) — Assigned by IEEE to manufacturers. The first 3 bytes identify the vendor. Example:
00:50:56= VMware,DC:A6:32= Raspberry Pi. - Device ID — Assigned by the manufacturer to uniquely identify each NIC within that OUI.
- Notation — Written as six hex pairs. Colon-separated
AA:BB:CC:DD:EE:FF(Linux/Wireshark), dash-separatedAA-BB-CC-DD-EE-FF(Windows), or dot-separatedAABB.CCDD.EEFF(Cisco).
Tip
Special bits in the first byte: Bit 0 (least significant) of the first octet is the I/G bit — 0 = unicast, 1 = multicast. Bit 1 is the U/L bit — 0 = globally unique (BIA), 1 = locally administered. A MAC starting with 02:xx:xx is locally administered, which is what Docker, VMs, and container runtimes commonly generate.
Broadcast vs. Unicast vs. Multicast
Unicast
One sender, one receiver. The destination MAC identifies exactly one NIC on the LAN.
I/G bit = 0
00:1A:2B:3C:4D:5E
Broadcast
One sender, all receivers on the LAN segment. The switch floods the frame out every port (except the source port).
All bits = 1
FF:FF:FF:FF:FF:FF
Multicast
One sender, a subscribed group. Switches flood multicast by default unless IGMP snooping is enabled.
I/G bit = 1, not all-1s
01:00:5E:xx:xx:xx
Warning
Broadcast domains are a scaling problem. Every broadcast frame consumes CPU on every host in the broadcast domain. A flat L2 network with 500+ hosts will drown in ARP, DHCP, and mDNS broadcast traffic. This is why VLANs exist — they segment broadcast domains at Layer 2. If you've ever seen a Kubernetes node's CPU spike from excessive ARP traffic in a large flat network, this is the root cause.
EtherType Values
The 2-byte EtherType field tells the receiving NIC which upper-layer protocol handler should process the payload. These are the values you'll encounter constantly in packet captures.
| EtherType | Protocol | Description |
|---|---|---|
0x0800 |
IPv4 | The workhorse — the vast majority of frames carry this. |
0x0806 |
ARP | Address Resolution Protocol — maps IP to MAC. Critical for L2/L3 interaction. |
0x86DD |
IPv6 | IPv6 payload. Increasingly common in dual-stack environments. |
0x8100 |
802.1Q VLAN Tag | Signals a VLAN-tagged frame. Inserts a 4-byte tag between Source MAC and the original EtherType. |
0x88CC |
LLDP | Link Layer Discovery Protocol — neighbor discovery between switches/routers. |
0x8906 |
FCoE | Fibre Channel over Ethernet — storage traffic on Ethernet (data center convergence). |
Note
Wireshark filter tip: Use eth.type == 0x0806 to isolate ARP traffic, or eth.type == 0x8100 to find VLAN-tagged frames on a trunk port mirror.
MTU — Maximum Transmission Unit
MTU defines the largest payload (in bytes) a frame can carry. It does not include the Ethernet header or FCS — only the payload portion.
MTU: 1500 bytes
Max frame on wire: 1518 bytes (14-byte header + 1500 payload + 4-byte FCS).
With 802.1Q tag: 1522 bytes ("baby giant").
This is the universal default. Every switch, router, and host assumes 1500 unless configured otherwise.
MTU: up to 9000 bytes
Max frame on wire: ~9018 bytes.
Common in storage networks (iSCSI, NFS), HPC, and east-west data center traffic.
Requires end-to-end configuration — every link in the path must support the larger MTU. A single 1500-byte link causes fragmentation or drops.
Warning
MTU mismatches are silent killers. If the path MTU drops below the sender's MTU and ICMP "Fragmentation Needed" (type 3, code 4) is blocked by a firewall, you get a black hole — connections hang on large packets while small ones (SSH handshake, DNS queries) work fine. This is the classic "I can ping but can't transfer files" symptom. In Kubernetes, watch for this when overlay networks (VXLAN, Geneve) add encapsulation headers that reduce the effective MTU by 50–100 bytes.
Why MTU Matters — The Math
- IP fragmentation — When an IP packet exceeds the link MTU, the router fragments it. Fragmentation is CPU-intensive, causes reassembly overhead at the destination, and a single lost fragment means retransmitting the entire original packet.
- Don't Fragment (DF) bit — Most modern stacks set the DF bit in the IP header. With DF set, an oversized packet is dropped (not fragmented) and the router sends an ICMP "Fragmentation Needed" message. This is the basis of Path MTU Discovery (PMTUD).
- Overlay overhead — VXLAN adds 50 bytes, Geneve adds 50+ bytes, GRE adds 24+ bytes. If the underlay MTU is 1500, your overlay effective MTU is ~1450. Set the inner MTU accordingly or increase the underlay MTU to 9000.
Tip
Quick test: ping -M do -s 1472 <target> on Linux sends a 1500-byte packet (1472 payload + 20 IP header + 8 ICMP header) with DF set. If it fails, you have an MTU issue on the path. Decrease -s until you find the working size.
Ethernet Evolution
Ethernet has scaled from 10 Mbps over coax to 400 Gbps over fiber while maintaining the same frame format. That backward compatibility is remarkable — a 10 Gbps switch still speaks the same frame structure as the original 1980s Ethernet.
| Standard | Speed | Medium | Max Distance | Year |
|---|---|---|---|---|
10BASE-T |
10 Mbps | Cat 3+ UTP | 100 m | 1990 |
100BASE-TX |
100 Mbps | Cat 5 UTP | 100 m | 1995 |
1000BASE-T |
1 Gbps | Cat 5e/6 UTP | 100 m | 1999 |
10GBASE-T |
10 Gbps | Cat 6a/7 UTP | 100 m | 2006 |
10GBASE-SR |
10 Gbps | Multimode fiber | 300 m | 2002 |
25GBASE-SR |
25 Gbps | Multimode fiber | 100 m | 2016 |
100GBASE-SR4 |
100 Gbps | Multimode fiber (4x) | 100 m | 2015 |
400GBASE-SR8 |
400 Gbps | Multimode fiber (8x) | 100 m | 2018 |
Naming Convention Decoder
Ethernet standards follow the pattern [speed]BASE-[encoding/medium]:
- Number — Speed in Mbps (10, 100) or Gbps (1000, 10G, 25G, 100G, 400G)
- BASE — Baseband signaling (as opposed to broadband)
- T — Twisted pair copper
- SR — Short-reach fiber (multimode)
- LR — Long-reach fiber (single-mode, ~10 km)
- ER — Extended-reach fiber (single-mode, ~40 km)
- CR — Direct-attach copper (DAC cables in racks)
Note
Data center relevance: Modern data centers typically run 25G to servers (replacing 10G), 100G for leaf-spine links, and are transitioning to 400G for spine-to-spine and core. If you're managing K8s clusters on bare metal, understanding these speeds and the cabling constraints (fiber type, distance limits, SFP compatibility) directly impacts your network design and procurement decisions.
10 Mbps
1990 — 10BASE-T
100 Mbps
1995 — Fast Ethernet
1 Gbps
1999 — Gigabit
10 Gbps
2002–2006
25/100 Gbps
2015–2016
400 Gbps
2018+