DEV Community

Cover image for Why Ethernet Mandates a 64-Byte Minimum Packet: CSMA/CD Explained
Binary Dose
Binary Dose

Posted on Originally published at binarydose.in

Why Ethernet Mandates a 64-Byte Minimum Packet: CSMA/CD Explained

Why Ethernet Mandates a 64-Byte Minimum Packet: CSMA/CD Explained

Have you ever wondered why Ethernet (IEEE 802.3) forbids packets smaller than 64 bytes?

If you try to transmit a 20-byte payload, your network interface card (NIC) forcibly injects padding bytes to reach that exact 64-byte threshold.

This is not arbitrary protocol overhead—it is a physical law required by CSMA/CD (Carrier Sense Multiple Access with Collision Detection).


⚡ The Worst-Case Collision Dilemma

Over a shared copper cable, electromagnetic signals travel at a finite propagation speed: roughly 2 × 10⁸ m/s (about two-thirds the speed of light).

Let the propagation time between the two farthest hosts (A and B) be Tₚ:

Time t = 0:          [ Host A ] ────(Signal in Transit ➔)─────── [ Host B ]
Time t = Tp - ε:     [ Host A ] ──────────────────────(⚡ Collision!) [ Host B ]
Time t = 2 * Tp:     [ Host A ] ◄──(Collision Wave Returns)───── [ Host B ]
Enter fullscreen mode Exit fullscreen mode
  1. t = 0: Host A senses the cable is idle and begins transmitting.
  2. t = Tₚ - ε: A fraction of a microsecond before A's signal reaches Host B, Host B checks the cable. Because A's signal hasn't arrived yet, B senses an idle line and starts transmitting!
  3. Collision: Signals collide near Host B.
  4. Collision Echo: The resulting abnormal voltage spike propagates backward across the cable toward Host A.
  5. t = 2 × Tₚ: The collision echo finally reaches Host A.

THE GOLDEN INVARIANT:
Host A can only detect a collision if it is still actively transmitting bits when the collision echo returns! If A finished sending early, it cleared its transmit buffer and assumed total success.


📐 Deriving the 64-Byte Requirement

To guarantee that transmission time Tₜ is long enough to detect the worst-case collision echo:

Transmission Time (Tt) >= Round-Trip Time (2 * Tp)

Since Tt = Frame_Length (L) / Bandwidth (B):
L / B >= 2 * Tp  ==>  L_min = 2 * Tp * B
Enter fullscreen mode Exit fullscreen mode

In standard 10 Mbps Ethernet:

  • Round-Trip Time (2 × Tₚ) over a maximum 2.5 km network = 51.2 μs.
  • L_min = 51.2 μs × 10,000,000 bits/s = 512 bits = 64 bytes!

🛠️ Truncated Binary Exponential Backoff

When a collision occurs, both hosts jam the wire and back off using:

# After n collisions (up to 10):
k = random.randint(0, 2**min(n, 10) - 1)
wait_time = k * 51.2  # microseconds (slot time)
Enter fullscreen mode Exit fullscreen mode

Doubling the slot range on every collision prevents immediate re-collisions.


🚀 Experience the Live Space-Time Collision Simulator

Want to see electromagnetic propagation delay, collision waves, and exponential backoff animated live?

👉 Test the interactive CSMA/CD space-time simulator on Binary Dose.

Top comments (0)