What is IPv6?
Deeper water, and enough of it that we will not need to find more.
Overview
IPv6 is the successor to IPv4, published as a draft standard in 1998 and finalized as RFC 8200 in 2017. It was designed with one non-negotiable requirement: never run out of addresses again.
An IPv6 address is 128 bits, four times the length of an IPv4 address. That does not make the pool four times bigger.
The usual comparison is that you could assign an address to every grain of sand on Earth and barely make a dent. That is true and it undersells it. A more useful framing: every person alive could be given more addresses than the entire IPv4 internet has ever contained, and the pool would still be effectively untouched.
How the notation works
IPv6 is written as eight groups of four hexadecimal digits, separated by colons. Written in full it is long and unpleasant, so two shortening rules apply.
A few consequences of those rules are worth knowing, because they show up in real configuration files.
- Hex digits are case insensitive.
2001:DB8::1and2001:db8::1are the same address. Lowercase is the convention. - Only leading zeros go. The group
8329keeps all four digits. The group0042becomes42. - In a URL, wrap it in brackets.
http://[2001:db8::1]:8080/, because the colons would otherwise collide with the port separator.
Why adoption took so long
IPv6 was ready years before IPv4 ran out, and it still took decades to reach real deployment. The reason is not laziness or inertia. It is that the two protocols cannot talk to each other.
An IPv6-only host cannot open a connection to an IPv4-only host. There is no clever header trick that makes it work, because the address fields are different sizes and the packet formats differ. So the first network to go IPv6-only would have been unable to reach most of the internet, and the first website to go IPv6-only would have been unreachable by most of its visitors. Nobody had an incentive to move first, and everybody had an incentive to wait.
The way out is dual stack: run both protocols side by side on the same network, the same router, and the same machine. A dual-stack device gets an address of each kind and uses whichever the far end supports. That is what most connections do today, and it is why our front page tests each protocol independently instead of asking once and assuming.
A single request would tell you only which protocol your browser happened to prefer at that moment. Forcing each one separately is the only way to answer the two distinct questions: does IPv4 work, and does IPv6 work. This also makes it visible when a VPN carries one and leaks the other.
What else changed
Larger addresses are the headline, and they are not the only difference.
| Area | IPv4 | IPv6 |
|---|---|---|
| Address configuration | DHCP, or set by hand | Devices can configure themselves from a router advertisement |
| NAT | Nearly universal | Usually unnecessary, since there is no shortage to work around |
| Header | Variable length, with options | Fixed 40 bytes, with extensions chained after it |
| Broadcast | Yes | Replaced by multicast, which is less noisy |
| Fragmentation | Routers may fragment packets | Only the sender may, which keeps routers simpler and faster |
The absence of NAT is the change with the largest practical effect. Under IPv4, every device in your home hides behind one address. Under IPv6, each device can hold its own globally routable address, which makes some things dramatically easier and means your firewall is now doing the job NAT was accidentally doing before.
Ranges worth recognizing
| Range | Name | What it tells you |
|---|---|---|
::1 | Loopback | This machine. The IPv6 equivalent of 127.0.0.1 |
fe80::/10 | Link-local | Valid only on the local link. Every IPv6 interface has one |
fc00::/7 | Unique local | The rough equivalent of a private IPv4 range |
2000::/3 | Global unicast | A normal routable address, the kind you would be given |
2001:db8::/32 | Documentation | Reserved for examples, which is why it appears throughout this site |
ff00::/8 | Multicast | One-to-many delivery |
If our front page shows no IPv6 address
This is common and rarely a problem. It means one of a few things.
- Your provider has not enabled it. Still true for a meaningful share of connections, especially on fixed-line providers in some regions.
- Your router is not passing it through. Some consumer hardware ships with IPv6 off, or supports it poorly enough that it was turned off deliberately.
- Something is blocking it. A VPN, a firewall rule, or a privacy tool. If you are on a VPN, an empty IPv6 row is usually the VPN doing its job rather than a fault.
The IPv4 internet still reaches everything, so nothing breaks. It does mean you are relying on your provider's NAT, and if that is carrier-grade NAT, some things like hosting a server from home become harder.