Across a Router
How a broadcast reaches a server it cannot possibly reach
Step 1 of 2 — understand the idea. Read this first and the packet trace will confirm what you already expect, instead of teaching you two things at once.
What you'll be able to do
- ▸Explain why a router must not forward a DHCP broadcast
- ▸Read giaddr and say which segment a relayed client is on
- ▸Say why a missing relay and a dead server look identical from the client
- the room
- → the broadcast domain — one segment
- the walls
- → the router, which does not pass shouts through
- the receptionist repeating it elsewhere
- → the relay's unicast to the server
- saying which room the question came from
- → giaddr, the relay's address on the client's segment
- announcing the answer back to the room
- → the relay broadcasting the reply on that segment
Where it breaks down: A receptionist can decide who to ask. A relay cannot — it forwards to exactly the servers it is configured with, and if that address is wrong or unreachable the DISCOVER is dropped as silently as if the relay were not there. "No DHCP server" and "a relay pointed at the wrong address" look identical from the client.
✗ Common misunderstanding: The relay agent forwards the client's broadcast to the server.
Why that's wrong: It does not forward anything. Forwarding would mean the router passing a broadcast between segments, which is the one thing it must never do. The relay ORIGINATES a new packet, with its own source address, its own hop count, and giaddr filled in.
Correct model: The client's packet dies on the client's segment, exactly as it should. What reaches the server is a different packet, sent by the router, carrying the same DHCP message inside it.
The packets prove it: In this trace the client's DISCOVER leaves 10.0.1.x with source 0.0.0.0 to 255.255.255.255. The one that reaches the server has source 10.0.2.1 and destination 10.0.2.50 — a unicast the router sent, and there is no forwarding decision anywhere in the trace.
Watch these fields in the lab: dhcp.giaddr · dhcp.hops · ipv4.destIp
- Relay agent
- Software on a router that listens for DHCP broadcasts on one segment and repeats them as unicast to a server elsewhere — then puts the answers back on the segment they came from.
- giaddr
- The "gateway address" field, filled in by a relay with its own address on the client's segment. Zero means no relay was involved. It is both the return address for the reply and the server's only clue about which subnet the client is on.
- hops
- A counter incremented by each relay a message passes through. It bounds how far a message can travel if relays are ever chained or misconfigured into a loop — the same job TTL does for ordinary packets.
- Scope
- One subnet's worth of configuration on a DHCP server: a pool of addresses, a mask, a gateway. A server that answers several segments has one scope per segment and picks between them by reading giaddr.
Watch these fields in the lab: dhcp.giaddr · dhcp.hops
✓ Concept check — before you open the packets
These test the idea, not the trace. You should be able to answer them from the explanation above.
Now that you understand the concept, observe how it appears in the packet exchange.
The lab runs a real simulated capture — pause, step, click any packet, and inspect every byte.