Understanding Reserved Addresses in IPv4 Subnets (and Why /31 Is Different)
A

Lead Engineer @ Packetware

Understanding Reserved Addresses in IPv4 Subnets (and Why /31 Is Different)

When you first start learning about IPv4 subnetting, one thing that confuses nearly everyone is this:

“Why can’t I use the .0 address in a /24 subnet? It seems like a waste!”

Let’s unpack why that’s the case, and why there’s one important exception — the /31 network — where things work differently.


What Is a Network Address?

Every IPv4 address is made up of 32 bits, divided into:

[ Network bits | Host bits ]

The network bits identify which subnet an address belongs to, while the host bits identify which device within that subnet.

For example, in the subnet 192.168.1.0/24:

  • The first 24 bits (192.168.1) define the network.
  • The last 8 bits are for hosts.

The network address is simply the one with all host bits set to 0 — in this case, 192.168.1.0. It represents the entire subnet, not a single device.


The Broadcast Address

At the opposite end of the range, you have the broadcast address — the address with all host bits set to 1. In a /24, that’s 192.168.1.255.

This special address is used when a device needs to talk to every other device on the subnet (for example, ARP requests or DHCP discovery).


Usable Host Range

In a /24 network:

Type Address Description
Network address 192.168.1.0 Identifies the subnet
Usable hosts 192.168.1.1192.168.1.254 Devices in the subnet
Broadcast address 192.168.1.255 Messages to all hosts

That means there are 254 usable addresses — two are reserved.


Why We Can’t Use .0 or .255 Normally

The .0 and .255 addresses aren’t “wasted” — they have specific roles in networking protocols and routing tables.

If you gave a device the .0 address, routers could get confused and think packets were meant for the whole subnet instead of that one host. That’s why it’s not allowed for general-purpose networks — it keeps routing consistent and predictable.


The Exception: /31 Subnets

Here’s where things get interesting.

In a /31, we only have two total addresses. For example:

192.168.1.10/31 → 192.168.1.10 and 192.168.1.11

Normally, one would be a network address and one a broadcast address — leaving zero usable hosts. That doesn’t make sense for point-to-point links (like two routers connected directly).

To fix this, RFC 3021 changed the rule:

On point-to-point links, both addresses in a /31 subnet are usable.

That means:

  • 192.168.1.10 can be Router A
  • 192.168.1.11 can be Router B No need for a broadcast address, since there are only two endpoints.

Why /31 Is So Useful

Using /31 subnets helps save valuable IPv4 addresses. Instead of wasting half of a /30 (which uses four addresses for only two devices), /31 makes both usable — perfect for backbone or inter-router links where you’ll never need more than two endpoints.