An IP address is a location, not an identity — and most of the addresses you'll ever see (192.168.x.x, 10.x.x.x) are deliberately unroutable on the public internet. What that split actually buys you, and how CIDR notation describes a range instead of one address.
4 min read
93.184.216.34 (IPv4) or 2606:2800:220:1:248:1893:25c8:1946 (IPv6) is a numeric
address that routers use to forward packets toward it — conceptually closer to a
postal address than to a name. The same physical machine can have different IP
addresses over time (your laptop gets a new one on every Wi-Fi network), and one
IP address can represent thousands of different machines sitting behind it (a
load balancer, a NAT gateway — both covered later in this domain).
IPv4 addresses are 32 bits, written as four dot-separated numbers 0–255
(192.168.1.1). There are only about 4.3 billion possible IPv4 addresses — long
since exhausted for direct public assignment, which is the entire reason the
private/public split below exists, and why IPv6 (128 bits, room for roughly
340 undecillion addresses) exists at all.
Three specific ranges are reserved as private — routable within a local network, but every router on the public internet is configured to silently drop packets addressed to them:
10.0.0.0 – 10.255.255.255 (10.0.0.0/8)
172.16.0.0 – 172.31.255.255 (172.16.0.0/12)
192.168.0.0 – 192.168.255.255 (192.168.0.0/16)
Your home router almost certainly hands out 192.168.1.x addresses to every
device on your Wi-Fi. All of them share ONE public IP address (your router's),
which is why this works at internet scale despite only ~4.3 billion IPv4
addresses existing for billions of devices — most devices never need a public
address at all, only a path to something that has one (your router, doing NAT —
covered in a later lesson).
192.168.1.0/24 means "the first 24 bits are fixed (the network), the remaining
8 bits vary (the hosts)" — a range of 256 addresses, 192.168.1.0 through
192.168.1.255. The /24 is the subnet mask length. Smaller numbers after
the slash mean a bigger range: /16 covers 65,536 addresses, /8 covers over
16 million.
10.0.0.0/8 -> 10.0.0.0 – 10.255.255.255 (~16.7M addresses)
10.0.0.0/16 -> 10.0.0.0 – 10.0.255.255 (65,536 addresses)
10.0.1.0/24 -> 10.0.1.0 – 10.0.1.255 (256 addresses)
10.0.1.0/28 -> 10.0.1.0 – 10.0.1.15 (16 addresses)
This is the exact notation you'll type into every cloud provider's VPC/subnet
setup — AWS, GCP, and Azure all use CIDR blocks to define network boundaries, and
misreading a /24 as "24 addresses" instead of "24 fixed bits" is a genuinely
common early mistake.
A cloud VPC (Virtual Private Cloud) typically gets one large CIDR block —
10.0.0.0/16, say — then gets split into smaller subnets for different purposes:
a /24 for public-facing servers, another /24 for a private database tier that
has no direct internet route at all. Splitting this way means a security rule
("nothing from the internet reaches the database subnet directly") can be
enforced at the network level, not just hoped for in application code.
127.0.0.1 (localhost) — always refers to the machine you're currently on; never leaves it0.0.0.0 — as a destination, invalid; as a bind address for a server, means "listen on every network interface this machine has"255.255.255.255 — the broadcast address, "every device on this local network"169.254.x.x — a self-assigned address a device picks when it asked for an address (via DHCP) and got no answer — seeing this address usually means "this machine couldn't reach a DHCP server," a real diagnostic signalIPv6 addresses are written as eight groups of hex digits
(2606:2800:220:1:248:1893:25c8:1946), with :: allowed once per address to
compress a run of zero groups. The private/public split still conceptually
exists (IPv6 has its own "unique local" range, fc00::/7), but IPv6's address
space is so large that NAT is no longer a practical necessity the way it is for
IPv4 — every device can plausibly get its own globally unique address. Most
production systems today still run dual-stack (both IPv4 and IPv6 simultaneously)
rather than IPv6-only, since not every network path supports IPv6 yet.
Check your understanding
A quick comprehension check — not tracked, not graded, just for you.
1. What does the /24 in 10.0.1.0/24 actually specify?
2. Why are ranges like 192.168.x.x and 10.x.x.x called 'private'?
3. What does binding a server to 0.0.0.0 mean?
Networking Fundamentals