Subnetting & IP Addressing — Trivia & Interesting Facts¶
Surprising, historical, and little-known facts about IP addressing and subnetting.
The original Internet had only 256 possible networks¶
The first IP addressing scheme (RFC 760, 1980) used an 8-bit network portion and a 24-bit host portion. This meant there could be only 256 networks on the entire Internet, each with up to 16 million hosts. The assumption was that there would be very few large networks (universities, military, corporations). By 1981, it was already clear this wouldn't scale, and classful addressing (Class A, B, C) was introduced in RFC 791.
Classful addressing wasted billions of IP addresses¶
Class A networks (/8) gave a single organization 16.7 million addresses. Organizations like MIT, IBM, Ford, Apple, and the US Postal Service each received an entire /8 block. MIT alone held more IPv4 addresses than the entire country of China. The waste was extraordinary — most Class A holders used less than 1% of their allocation. This is the primary reason IPv4 addresses ran out.
CIDR was invented in 1993 to save the Internet from address exhaustion¶
Classless Inter-Domain Routing (RFC 1519, 1993) eliminated the rigid Class A/B/C boundaries and allowed networks to be any size using prefix notation (/8 through /32). CIDR also enabled route aggregation — multiple small networks could be advertised as a single larger prefix, slowing the growth of routing tables. Without CIDR, the Internet routing table would have grown unmanageably large by the late 1990s and IPv4 would have been exhausted a decade earlier.
The /31 subnet was controversial because it has no broadcast address¶
RFC 3021 (2000) defined the use of /31 subnets (2 addresses, no network or broadcast address) for point-to-point links. This was controversial because it violated the fundamental rule that the first address is the network address and the last is the broadcast address. But on a point-to-point link with exactly two devices, broadcast is meaningless, and using /31 instead of /30 saves one address per link — significant when you have thousands of router-to-router links.
127.0.0.0/8 reserves 16 million addresses just for loopback¶
The entire 127.0.0.0/8 range (16,777,216 addresses) is reserved for the loopback interface, but only 127.0.0.1 is typically used. This means 16,777,215 addresses are wasted for a function that requires exactly one address. Proposals to reclaim the unused addresses have been discussed but never implemented because too much software hardcodes assumptions about the 127.0.0.0/8 range.
IPv6 addresses are 128 bits — enough to assign an IP to every atom on Earth's surface¶
IPv6's 128-bit address space provides approximately 3.4 x 10^38 unique addresses. This is roughly 4.7 x 10^28 addresses per person alive today, or enough to assign an IP address to every atom on the surface of the Earth with addresses left over. The massive address space was intentional — it ensures that even with wasteful allocation policies, the world will never run out of IP addresses again.
The "169.254" address means your DHCP failed¶
The 169.254.0.0/16 range is reserved for Automatic Private IP Addressing (APIPA, RFC 3927). When a device can't reach a DHCP server, it self-assigns a random address from this range. Seeing a 169.254.x.x address on a production machine is an immediate red flag — it means DHCP is broken. The range is also used for AWS link-local services (the metadata endpoint at 169.254.169.254) and VRRP communication.
Variable Length Subnet Masking wasn't supported by RIP until RIPv2¶
VLSM (using different subnet mask lengths within the same network) is essential for efficient address allocation. But the original RIP protocol (RIPv1) didn't include the subnet mask in its route updates — it assumed all subnets used the same mask. This meant that networks running RIPv1 had to use a single subnet mask everywhere, wasting addresses on small point-to-point links. RIPv2 (RFC 2453, 1998) and OSPF both support VLSM.
The subnet zero and all-ones subnet were off-limits for decades¶
For years, the first subnet (subnet zero, e.g., 10.0.0.0/24 in 10.0.0.0/16) and the last subnet (all-ones subnet, e.g., 10.255.0.0/24) were considered unusable because they could be confused with the network address and broadcast address respectively. Cisco routers required the ip subnet-zero command to use them. RFC 1878 (1995) clarified that these subnets are valid, and Cisco enabled ip subnet-zero by default starting in IOS 12.0, but the prohibition persisted in certification study materials for years.
Supernetting is subnetting in reverse, and it powers the Internet¶
While subnetting divides a network into smaller pieces, supernetting (route aggregation) combines multiple smaller networks into a single larger route. An ISP with customers on 203.0.113.0/26, 203.0.113.64/26, 203.0.113.128/26, and 203.0.113.192/26 can advertise a single 203.0.113.0/24 route. Without supernetting, the global BGP routing table would be 10-100 times larger than it already is, and Internet routing would be unsustainable.