Chapter 16 — IPv6: why it exists and how it differs
In one sentence
IPv6 replaces the 32-bit address with a 128-bit one — enough addresses for everything forever — and simplifies several things along the way, but it's not just "IPv4 with more digits".
Why it exists
IPv4 ran out of addresses. Officially. The global pool was exhausted between 2011 and 2019 depending on region. NAT (Chapter 12) bought time, at the cost of making the internet more complicated and less peer-to-peer.
IPv4: 32 bits -> 4,300,000,000 addresses
IPv6: 128 bits -> 340,282,366,920,938,463,463,374,607,431,768,211,456
That's more addresses than there are grains of sand on Earth, by a very large margin. The design goal was "never do this again".
Reading an IPv6 address
They look intimidating and are simpler than they appear.
Full: 2001:0db8:0000:0000:0000:ff00:0042:8329
\___/ \___/ \___/ \___/ \___/ \___/ \___/ \___/
8 groups of 4 hex digits = 128 bits
Rule 1: drop leading zeros in each group
2001:db8:0:0:0:ff00:42:8329
Rule 2: replace ONE run of all-zero groups with "::"
2001:db8::ff00:42:8329
(You may only use "::" once, or it would be ambiguous.)
The structure, for a typical address:
2001:db8:abcd : 0012 : 0000:0000:0000:0001
\____________/ \__/ \___________________/
given to you your the device part
by your ISP subnet (64 bits -- huge)
(48 bits) (16 bits)
Almost every IPv6 LAN is a /64. That's the convention -- don't fight it.
The types you'll see
| Starts with | Name | Meaning |
|---|---|---|
::1 |
Loopback | Same as IPv4's 127.0.0.1 |
fe80:: |
Link-local | Auto-generated on every IPv6 interface, always present, never routed off the local link. Used for the plumbing. |
fd00:: |
Unique Local (ULA) | The IPv6 "private" range, like 192.168.x.x |
2000:: – 3fff:: |
Global unicast | Real, internet-routable addresses |
ff00:: |
Multicast | IPv6 has no broadcast at all — multicast replaces it |
Your device will have several IPv6 addresses at once — a link-local, maybe a ULA, and one or more global ones (often including temporary "privacy" addresses that rotate daily). This is normal, not a misconfiguration.
What's genuinely different
| IPv4 | IPv6 | |
|---|---|---|
| Getting an address | DHCP server hands them out | Usually SLAAC: the router advertises the network prefix, and the device makes up its own address. No server needed. |
| Finding neighbours | ARP | NDP (Neighbor Discovery), which runs over ICMPv6 |
| Broadcast | Yes | None — multicast only |
| NAT | Universal | Normally not used — every device gets a public address |
| Fragmentation | Routers can do it | Only the sender may fragment |
| Header | Variable length, has a checksum | Fixed 40 bytes, no checksum (lower layers handle it) |
| Minimum MTU | 576 | 1280 |
The most important operational consequence: because NDP runs on ICMPv6, blocking ICMPv6 breaks IPv6 entirely. You cannot treat it like IPv4's ICMP.
Running both at once
Almost everything today is dual-stack — it speaks both. When you connect to a
site, your machine gets both an IPv4 (A record) and IPv6 (AAAA record) answer
from DNS, and uses Happy Eyeballs: it starts connecting over both roughly
simultaneously and uses whichever answers first. That way, broken IPv6 costs you
~250 ms instead of a 30-second timeout.
Practice (20 min)
A. Do you have IPv6?
ip -6 addr show # Linux
ifconfig | grep inet6 # macOS
curl -6 -s https://ifconfig.co ; echo # your public IPv6 (fails if you have none)
curl -4 -s https://ifconfig.co ; echo # your public IPv4
Also visit test-ipv6.com in a browser — it gives a clear score.
B. Note that you always have a link-local address, even with no IPv6 internet:
ip -6 addr show | grep fe80
Every IPv6-capable interface has one, always.
C. Ping over IPv6:
ping6 -c 3 2606:4700:4700::1111 # Cloudflare's IPv6 DNS
ping6 -c 3 ipv6.google.com
# link-local needs an interface specified, note the % syntax:
ping6 -c 2 fe80::1%eth0
D. Watch Neighbor Discovery (IPv6's ARP):
sudo tcpdump -i any -n 'icmp6 && ip6[40] >= 133 && ip6[40] <= 137'
Leave it running a minute. You'll see Router Advertisements and Neighbor Solicitations — the IPv6 equivalents of Chapter 6's ARP.
E. Compare DNS answers:
dig example.com A +short
dig example.com AAAA +short
Common confusions
- "Do I need to learn IPv6?" Yes. Mobile networks are largely IPv6-only internally, cloud providers use it, and it's in every certification. But you can learn it after you're solid on IPv4 — the concepts transfer.
- "Why does my machine have five IPv6 addresses?" By design (see above).
- "Is IPv6 less secure without NAT?" Different, not worse. You use a stateful firewall (default-deny inbound) instead of relying on NAT's accidental hiding. Your home router does this already.
- "Can IPv4 talk to IPv6?" Not directly. They're separate protocols. Devices run both (dual-stack), or use translation gateways (NAT64).
Check yourself
- Why does IPv6 exist?
- What does
::mean in an address, and why can you only use it once? - What is
fe80::1and where would you find it? - Why is blocking ICMPv6 catastrophic when blocking ICMPv4 is merely bad?
Further reading
- Video series: "IPv6 Fundamentals" — Practical Networking. Ed's IPv6 series is the gentlest good introduction available.
- Site:
test-ipv6.com— test your own connectivity, with explanations. - Book: IPv6 Fundamentals — Rick Graziani. Written for people who already know IPv4; clear and practical.
- Article: "Understanding IPv6" — APNIC blog has consistently good IPv6 material.
- Video: "IPv6 - The Basics" — NetworkChuck (energetic, good for a first pass).
End of Part 3 — Milestone check
- I can explain the two parts of an IP address
- I can do subnetting (Set A) without looking anything up
- I can design a VLSM allocation, largest first
- I can name the three private ranges and explain NAT
- I can read a routing table and explain longest prefix match
- I have run traceroute/mtr and can read the output without being fooled
- I can diagnose an MTU problem from its symptoms
- I can read an IPv6 address and know what
fe80::means
This is the hardest part of the guide. If the subnetting box isn't ticked, go back to Chapter 10 and do 20 practice problems. Everything else builds on it.