RFC 922: Broadcasting Internet Datagrams in the Presence of Subnets

2026-06-29

RFC: RFC 922

Published: 1984

Authors: Jonathan B. Postel

By 1984, the Internet had a problem nobody had planned for: subnets. RFC 950 was carving Class A/B/C networks into smaller pieces with subnet masks, but the broadcasting model from RFC 919 assumed a flat network. If a host wants to shout "is anyone there?", what address does it use? And what should routers do with it? RFC 922, written by Jon Postel in October 1984, is the four-page document that answers those questions — and accidentally sets up some of the most consequential security incidents of the 1990s.

Postel distinguishes three kinds of broadcast:

The clever design choice here is that broadcasts traverse the routed Internet as unicasts. A host in Berkeley could send one packet to 10.255.255.255 and every host on MIT's network 10 would receive it. In 1984 that felt elegant — a single packet, fan-out at the edge. It also meant Postel had to settle a religious war: should "all hosts" be encoded as all ones or all zeros? Both conventions existed in deployed code (BSD 4.2 used all-zeros). RFC 922 standardizes on all-ones and politely deprecates all-zeros, while acknowledging that fixing every host would take years.

And then the 1990s happened. In 1997, somebody noticed that directed broadcasts plus ICMP equals a force multiplier. Send one spoofed ICMP echo to x.y.z.255, the destination network turns it into hundreds of echo replies, all aimed at your victim. The Smurf attack was, in essence, RFC 922 working exactly as designed — just used by someone with bad intentions. The fix came in RFC 2644 (2000), which flipped the default: routers SHOULD NOT forward directed broadcasts. Cisco IOS made no ip directed-broadcast the default in 12.0. A core piece of Postel's elegant 1984 design was quietly amputated, and almost nobody noticed because almost nobody had been using directed broadcasts on purpose.

What survives from RFC 922 today is the part that's invisible until it isn't:

It's also a reminder of how protocol design ages. Postel optimized for fan-out efficiency in a small, trusting network. Twenty years later we discovered that the same property is a denial-of-service weapon, and the right answer was to disable it. IPv6 took the lesson to heart — it has no broadcast at all, only multicast, where the sender must use an explicit group address and receivers opt in.

Why it matters: RFC 922 defined the broadcast addresses your stack still uses every time DHCP fires, and its directed-broadcast feature is the canonical case study in how a clean 1980s design became a 1990s amplification attack.

All newsletters