IPv6 Addresses Explained
IPv4 has 4.3 billion addresses. We have more devices than that. IPv6 expands the address space from 32 bits to 128 bits — giving us 340 undecillion (3.4 × 10^38) addresses. That’s enough for every grain of sand to have its own subnet.
The format
An IPv6 address is 128 bits, written as 8 groups of 4 hex digits separated by colons:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Each group: 16 bits = 4 hex characters
8 groups × 16 bits = 128 bits total
Two compression rules
That’s a lot to type. Two shortcuts:
1. Drop leading zeros within a group
2001:0db8:85a3:0000:0000:8a2e:0370:7334
2001:db8:85a3:0:0:8a2e:370:7334
2. Use :: once to replace consecutive zero groups
2001:db8:85a3:0:0:8a2e:370:7334
2001:db8:85a3::8a2e:370:7334
The :: can only appear ONCE per address (otherwise it’s ambiguous). The whole address still represents 128 bits.
Common IPv6 addresses to recognize
| Address | Meaning |
|---|---|
::1 |
Loopback (like 127.0.0.1) |
:: |
All zeros (like 0.0.0.0) |
fe80::/10 |
Link-local (auto-assigned) |
fc00::/7 |
Unique local (private) |
2000::/3 |
Global unicast (public) |
ff00::/8 |
Multicast |
The /64 standard
In IPv6, every subnet is /64. Yes, every single one. The first 64 bits are the network prefix, the last 64 bits are the host portion.
That means each subnet has 2^64 = 18 quintillion addresses. ISPs typically give homes a /56 or /48 — meaning you can carve out 256 or 65,536 /64 subnets.
Why no NAT
IPv6 has so many addresses that NAT isn’t needed. Every device gets a real, routable global IP. This restores the original end-to-end principle of the internet.
How devices get IPv6 addresses (SLAAC)
Stateless Address Auto-Configuration. The router announces the prefix; the device generates its own address from that prefix + its MAC (or a random number for privacy). No DHCP server required.
ip -6 addr show # see your IPv6 addresses on Linux
ifconfig | grep inet6 # macOS
Dual-stack: running both
Most networks today run IPv4 AND IPv6 simultaneously. Each connection prefers IPv6 (Happy Eyeballs algorithm); falls back to IPv4 if IPv6 isn’t reachable. Apps don’t care.
Why adoption is slow
- Old hardware doesn’t support it
- NAT made IPv4 “good enough” for most use cases
- Configuring IPv6 firewalls correctly is a learning curve
- ISPs in some regions never enabled it
But mobile networks are 100% IPv6 now (with NAT64 for IPv4 services). Cloud providers all support it. The transition is happening.
Quick test
curl -6 https://ipv6.google.com # force IPv6
curl https://test-ipv6.com # check your IPv6 readiness in browser
What to learn next
Private vs public IPs and the RFC 1918 ranges that matter for IPv4 networks. Up next.