Routelearn.net
Course menu

Unit 4: Ethernet and CablingLesson 4.2 (2 of 9 in this unit)17 of 84 in the Network Fundamentals course

The Ethernet frame

Every piece of data on a wired LAN travels inside an Ethernet frame. This lesson takes the frame apart field by field, explains why each field is there, and decodes a real frame byte by byte.

Beginner · 14 min read · Before this: Ethernet fundamentals, Encapsulation and de-encapsulation

An Ethernet frame is the unit of data sent on an Ethernet link: a header holding the destination MAC address, source MAC address and EtherType, then the payload (normally up to 1500 bytes), then a 4-byte Frame Check Sequence (FCS) the receiver uses to detect transmission errors.

In simple terms: A frame is the envelope that carries data across a wired LAN. The outside says who it is for and who sent it, and a check value at the end lets the receiver spot damage.

What an Ethernet frame is

A frame is the envelope that Ethernet uses to carry data across one link: from a computer to a switch, from a switch to another switch, or from a switch to a router. It has a header at the front (addresses and a type code), the payload in the middle (the data being carried), and a trailer at the end (an error check).

You met Ethernet in Ethernet fundamentals. Here you look inside the envelope. The format shown is Ethernet II, which carries almost all traffic on modern networks.

💡 In simple terms: a frame is like a parcel label stuck on a box. The label says who it is for, who sent it and what kind of thing is inside. The box holds the goods. A seal on the box shows whether it was damaged on the way.

Why frames exist

A cable can only carry a stream of bits: 1s and 0s. On its own, that stream has no meaning. The receiving device needs answers to a few questions:

  • Where does a message start and end? The preamble and the frame's length answer this.
  • Is this message for me? The destination MAC address answers this.
  • Who sent it? The source MAC address. The reply goes back to it.
  • What is inside? The EtherType: an IPv4 packet, an IPv6 packet or an ARP message.
  • Did it arrive undamaged? The FCS answers this.

Framing turns a raw stream of bits into separate, addressed, checkable messages. That is the main job of Layer 2, the Data Link layer, in the OSI model.

Where the frame sits

When an application sends data, each layer wraps it in its own header (this is encapsulation). The Ethernet frame is the last, outermost wrapper before the bits go onto the cable:

Data: The application produces data, such as an HTTPS request.

  1. Data · application
  2. Segment · transport
  3. Packet · network
  4. Frame · data link

Data: The application produces data, such as an HTTPS request. Segment: TCP adds a header with the source and destination ports. Packet: IP adds a header with the source and destination IP addresses. Frame: Ethernet adds MAC addresses in front and an error check (FCS) at the end.

On the way out each layer wraps the one above it; the receiver unwraps them in reverse (decapsulation).

So the frame carries the IP packet, and the IP packet carries the TCP or UDP segment, and the segment carries the application data. The frame only lives for one link. A router removes it, reads the IP packet, and builds a fresh frame for the next link.

The fields, one by one

Preamble7 BSync pattern
SFD1 BStart of frame
Destination MAC6 BWho it's for
Source MAC6 BWho sent it
EtherType2 Be.g. 0x0800 = IPv4
Payload46–1500 BIP packet (+ padding)
FCS4 BError check (CRC)
On the wire only (8 B)
Ethernet header: 14 B
Frame: 64–1518 bytes (destination MAC → FCS)
Ethernet II frame. The preamble and SFD are transmitted before the frame but aren't counted in its size. Payloads under 46 bytes are padded; 802.1Q VLAN tags add 4 bytes.
FieldSizePartWhat it does
Preamble + SFD8 bytesWire onlyA wake-up pattern of alternating 1s and 0s, then a marker that says “the frame starts now”. It lets the receiver lock on to the signal.
Destination MAC6 bytesHeaderThe MAC address of the interface that should receive the frame, or a broadcast/multicast address.
Source MAC6 bytesHeaderThe MAC address of the interface that sent the frame. Switches learn from this field.
EtherType2 bytesHeaderA code that says what is inside the payload, so the receiver hands it to the right protocol.
Payload46–1500 bytesDataThe data being carried, usually an IP packet. Short payloads are padded up to 46 bytes.
FCS4 bytesTrailerFrame Check Sequence: a CRC number calculated over the frame, so the receiver can spot corruption.

Preamble and SFD (briefly)

Before the frame proper, the sender transmits 7 bytes of preamble (the pattern 10101010 again and again) and 1 byte called the Start Frame Delimiter, 10101011. The preamble gives the receiver's electronics time to synchronise its clock with the signal. The two 1s at the end of the SFD say “the next bit is the first bit of the destination MAC”.

The network card adds and removes these 8 bytes in hardware. They are never counted in the frame size, and capture tools such as Wireshark never show them.

Destination MAC address (6 bytes)

The MAC address of the receiver. It can be:

  • Unicast: one specific interface, such as 02:00:00:00:00:bb.
  • Broadcast: ff:ff:ff:ff:ff:ff, meaning every device on the LAN.
  • Multicast: a group address such as 01:00:5e:00:00:fb.

The lesson Unicast, broadcast and multicast covers these three in depth.

Source MAC address (6 bytes)

The MAC address of the interface that sent the frame. It is always a unicast address, because a frame always comes from one interface. Switches read this field to learn where each device is (see How a switch learns MAC addresses).

EtherType (2 bytes)

A number that tells the receiver which protocol is inside the payload. Without it, the receiver would not know whether to pass the data to its IPv4 software, its IPv6 software or its ARP software.

EtherTypePayload is…Where you meet it
0x0800An IPv4 packetMost web, email and app traffic today
0x86DDAn IPv6 packetGrowing share of all traffic
0x0806An ARP messageARP requests and replies
0x8100A VLAN tag follows (802.1Q)Trunk links between switches (a CCNA topic)

Going deeper
In the original IEEE 802.3 format this same 2-byte field held the payload length instead of a type. The two formats can share a network because of a simple rule: a value of 1500 or less is a length, and a value of 1536 (0x0600) or more is an EtherType.

Payload (46 to 1500 bytes)

The data being carried. Usually this is a whole IP packet, headers and all. Two limits apply:

  • Maximum 1500 bytes. This is the MTU (Maximum Transmission Unit) of standard Ethernet. An IPv4 packet bigger than this must be split up, or the sender must use smaller packets. With a 20-byte IPv4 header and a 20-byte TCP header, that leaves 1460 bytes of actual data per frame.
  • Minimum 46 bytes. If there is less data, the sender adds padding (zero bytes) to reach 46. An ARP message is only 28 bytes, so it always gets 18 bytes of padding.

That gives a frame size (destination MAC to FCS) of 64 to 1518 bytes: 14 bytes of header, 46 to 1500 of payload, and 4 of FCS.

FCS: the error check (4 bytes)

The Frame Check Sequence is a 32-bit CRC (Cyclic Redundancy Check). The sender runs a fixed calculation over every byte from the destination MAC to the end of the payload and puts the result in the FCS. The receiver runs the same calculation. If its answer is different, at least one bit was changed on the way, and the frame is dropped.

⚠️ Ethernet does not ask for a damaged frame to be resent. It just throws it away and counts it as a CRC or FCS error on the interface. TCP notices the missing data later and resends it; UDP traffic is simply lost.

Why the destination comes first

The destination MAC is the very first thing after the preamble. That is on purpose. A device can decide what to do with a frame after reading only 6 bytes:

  • A computer's network card compares it with its own MAC address. If it does not match (and it is not a broadcast or a group it has joined), the card ignores the rest of the frame without bothering the operating system.
  • A switch can look up the destination in its MAC table while the rest of the frame is still arriving. Some switches (“cut-through” switches) even start sending the frame out of the right port before it has fully arrived.

💡 Think of it like a letter where the address is printed on the outside of the envelope. The postal worker never needs to open it to know where it goes.

What a switch reads

A switch is a Layer 2 device. It works with the frame header and does not need to understand the payload. For each frame it:

  1. Reads the destination MAC and looks it up in its MAC address table to choose the outgoing port.
  2. Reads the source MAC and records which port it arrived on (learning).
  3. Checks the FCS (store-and-forward switches) and drops the frame if it is damaged.
  4. Sends the frame on unchanged. The MAC addresses, EtherType and payload stay exactly the same.
PC02:00:00:00:00:aaSwitchreads, does not changeRouterin 02:00:00:00:00:01Server203.0.113.10
  1. 1. PC builds a frame: destination is the router's MAC (the default gateway), source is the PC's own MAC, EtherType 0x0800.
  2. 2. The switch forwards it unchanged: same MACs, same payload. It only chose the port.
  3. 3. The router builds a new frame: it strips the old Ethernet header, keeps the IP packet (still to 203.0.113.10) and wraps it in a new frame for the next link.
MAC addresses change at every router hop; the IP addresses inside stay the same from end to end.

You will follow this hop-by-hop behaviour in detail in Different-subnet communication.

A real frame, decoded

Here is a complete ARP request, the frame a PC sends when it wants to find the MAC address of its default gateway. The PC has MAC 02:00:00:00:00:aa and IP 192.168.1.10, and it is asking “who has 192.168.1.1?”. Every byte below is the real value, including a correctly calculated FCS.

ARP request: 192.168.1.10 asks for 192.168.1.1

64 bytes
ffffffffffff0200000000aa080600010800060400010200000000aac0a8010a000000000000c0a80101000000000000000000000000000000000000071c5d89
FieldBytesRaw valueMeaning
Destination MAC6ff ff ff ff ff ffBroadcast: every device on the LAN
Source MAC602 00 00 00 00 aaThe PC's own MAC address
EtherType208 060x0806 = ARP is inside
Payload: ARP message2800 01 08 00 06 04 …Request (opcode 1): sender 02:00:00:00:00:aa / 192.168.1.10, target ?? / 192.168.1.1 (c0 a8 01 01)
Padding1800 00 00 00 00 00 …18 zero bytes to reach the 46-byte minimum payload
FCS407 1c 5d 89CRC-32 over the 60 bytes before it
64 bytes in total: the smallest legal Ethernet frame. c0 a8 01 0a is 192.168.1.10 written in hexadecimal (c0 = 192, a8 = 168).

Now the same frame as a capture tool shows it. Notice the length: when you capture on the sending PC, the tool sees the frame before the network card adds the padding and FCS, so it reports 42 bytes, not 64.

Example output from a Linux PC, written for this lesson
$ sudo tcpdump -e -n -i eth0 arp or tcp port 443
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:14:02.118204 02:00:00:00:00:aa > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.10, length 28
10:14:02.118731 02:00:00:00:00:01 > 02:00:00:00:00:aa, ethertype ARP (0x0806), length 60: Reply 192.168.1.1 is-at 02:00:00:00:00:01, length 46
10:14:02.118802 02:00:00:00:00:aa > 02:00:00:00:00:01, ethertype IPv4 (0x0800), length 74: 192.168.1.10.51514 > 203.0.113.10.443: Flags [S], seq 3518220411, win 64240, options [mss 1460,sackOK,TS val 1873310 ecr 0,nop,wscale 7], length 0
The -e option prints the Ethernet header: source MAC > destination MAC, then the EtherType. Line 1 is the broadcast ARP request decoded above. Line 2 is the router's unicast reply: it arrived from the wire already padded, so it shows 60 bytes (the FCS is removed by the card). Line 3 is the first packet of an HTTPS connection: EtherType 0x0800, sent straight to the router's MAC.

A real-world example: loading a web page

You open https://routelearn.net on a laptop at home. Before any web page arrives, your laptop sends a burst of frames, and each one has a different job:

FrameDestination MACEtherTypePayload
1. Find the routerff:ff:ff:ff:ff:ff0x0806ARP request (if the router's MAC is not cached)
2. Ask DNS for the nameRouter's MAC0x0800IPv4 + UDP port 53 (DNS query)
3. Open the connectionRouter's MAC0x0800 or 0x86DDIPv4 or IPv6 + TCP SYN to port 443
4. Fetch the pageRouter's MAC0x0800 or 0x86DDEncrypted HTTPS data, up to 1460 bytes per frame

Notice that the destination MAC is the router every time, never the web server. The server is on another network, so the frame only needs to reach the first router. See What happens when you open a website? for the full journey.

When frames go wrong

ProblemWhat happensUsual cause
CRC / FCS errorsFrames fail the check and are droppedDamaged or badly terminated cable, interference, a faulty port, or a duplex mismatch
RuntsFrames shorter than 64 bytes, droppedCollisions on half-duplex links, a faulty NIC
GiantsFrames longer than the port allows, droppedJumbo frames sent to a port set for 1500 bytes
MTU mismatchSmall packets work but large ones vanish: pages half-load, file copies hangA link or tunnel on the path carries less than 1500 bytes of payload

💡 A classic sign of an MTU problem: ping works, small websites work, but big downloads or VPN connections stall. The small packets fit; the full-size ones do not.

Troubleshooting and useful commands

You cannot see frames with your eyes, but you can see their counters and capture them:

GoalWindowsLinux / macOS
See error countersnetstat -eip -s link show eth0 (Linux), netstat -I en0 (macOS)
See the MTUnetsh interface ipv4 show subinterfacesip link show (Linux), ifconfig en0 (macOS)
Capture framesWiresharksudo tcpdump -e -n -i eth0 or Wireshark
Test the full 1500-byte MTU (IPv4)ping -f -l 1472 192.168.1.1ping -M do -s 1472 192.168.1.1 (Linux)

Why 1472 in the last row? 1472 bytes of ping data + 8 bytes of ICMP header + 20 bytes of IPv4 header = 1500, exactly the MTU. The extra option stops the packet being split, so if it fails, something on the path has a smaller MTU.

Example output from a Linux PC, written for this lesson
$ ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:00:00:00:00:aa brd ff:ff:ff:ff:ff:ff
    RX:  bytes packets errors dropped  missed   mcast
    912833410  702144      0       0       0    1312
    TX:  bytes packets errors dropped carrier collsns
     88213004  341207      0       0       0       0
mtu 1500 is the payload limit. link/ether is this card's MAC; brd is the broadcast address. Rising RX errors usually means frames arriving with bad FCS values: check the cable first.

Common mistakes

  • Thinking the frame goes all the way to the server. A frame only crosses one link. The packet inside goes end to end.
  • Counting the preamble in the frame size. The 64–1518 byte range starts at the destination MAC and ends at the FCS.
  • Confusing MTU with frame size. MTU (1500) is the payload limit; the full frame is up to 1518 bytes.
  • Expecting Ethernet to resend bad frames. It only detects errors; recovery is TCP's job.
  • Thinking a switch rewrites MAC addresses. It does not. Only routers (and other Layer 3 devices) build new frames.
✅ Key takeaways
  • An Ethernet frame = 14-byte header (destination MAC, source MAC, EtherType) + 46–1500 byte payload + 4-byte FCS.
  • The preamble and SFD are sent first but are not part of the frame size.
  • EtherType says what is inside: 0x0800 IPv4, 0x86DD IPv6, 0x0806 ARP.
  • Destination comes first so devices can decide quickly what to do with the frame.
  • The FCS detects damage; damaged frames are dropped, not repaired.
  • Switches forward frames unchanged; routers build a new frame for every link.

Check yourself

Predict · scenario 1

A frame arrives with EtherType 0x86DD. Which software in the receiver handles the payload?

Predict · scenario 2

A receiver calculates a CRC that does not match the frame's FCS. What does it do?

Predict · scenario 3

An ARP message is 28 bytes long. How big is the payload field of the frame that carries it?

Predict · scenario 4

A PC sends a frame to a web server on the internet. Whose MAC is in the destination field as it leaves the PC?

Where to go next

Next, look closely at the addresses in the header in MAC addresses, then see how a switch uses them in How a switch learns MAC addresses. The ARP message decoded above is explained step by step in ARP fundamentals.

FAQ

What is the difference between a frame and a packet?
A packet is the Layer 3 unit (an IP packet, with IP addresses). A frame is the Layer 2 unit that carries it across one link (an Ethernet frame, with MAC addresses). The packet sits inside the frame's payload. Each router removes the old frame and builds a new one for the next link, while the packet inside travels end to end.
Why is the minimum Ethernet frame 64 bytes?
Early Ethernet shared one cable between many devices. A sender had to still be transmitting when news of a collision came back from the far end of the cable, and 64 bytes was long enough for that. The rule stayed for compatibility, so short payloads are padded up to 46 bytes.
What does an MTU of 1500 mean?
MTU (Maximum Transmission Unit) is the largest payload a frame can carry: 1500 bytes on standard Ethernet. That 1500 bytes must hold the IP header, the TCP or UDP header and the data. Some data-centre networks use larger “jumbo frames”, around 9000 bytes, but every device on the path must agree.
Does the FCS fix errors?
No. The FCS only detects errors. A receiver that finds a mismatch silently drops the frame. If anything is resent, it is because a higher layer, usually TCP, notices the missing data and sends it again.