A structured lesson workspace with readable content, hands-on examples, and a clean path to completion.
IPv6 addresses are 128 bits — four times IPv4. Written in full hex they'd be unusably long, so the notation has two abbreviation rules you'll use constantly. Learn them once and reading IPv6 becomes as natural as dotted decimal.
An IPv6 address is eight groups of 16 bits, each written as four hex digits, separated by colons. `2001:0db8:0000:0000:0000:0000:0000:0001` is one full address. Hexadecimal digits are 0–9 and a–f, case-insensitive.
Within each group, leading zeros can be dropped. `0db8` becomes `db8`, `0000` becomes `0`, `0001` becomes `1`. Trailing zeros are NOT dropped — `0db8` is fine but `0db` would be wrong.
A contiguous run of zero groups can be replaced with `::`. This can be done at most once per address — otherwise the compression is ambiguous. `2001:0db8:0000:0000:0000:0000:0000:0001` becomes `2001:db8::1`.
Why "at most once"? If an address had two `::` sequences, you couldn't tell how many zero groups each expanded to. `2001::1::1` is ambiguous — the reader can't reconstruct the original 8 groups.
| Full form | Abbreviated |
|---|---|
| 2001:0db8:0000:0000:0000:0000:0000:0001 | 2001:db8::1 |
| fe80:0000:0000:0000:0202:b3ff:fe1e:8329 | fe80::202:b3ff:fe1e:8329 |
| 2001:0db8:0000:0000:0000:ff00:0042:8329 | 2001:db8::ff00:42:8329 |
| 0000:0000:0000:0000:0000:0000:0000:0001 | ::1 |
| 0000:0000:0000:0000:0000:0000:0000:0000 | :: |
`::1` is the IPv6 loopback (the equivalent of `127.0.0.1`). `::` all-zeros is the unspecified address — used as a source when a host doesn't yet have an address.
In IPv4 you subnet freely. In IPv6 the convention is that every LAN is a /64. That gives 2^64 addresses per subnet — absurdly more than you'll ever need — and it's the boundary SLAAC (Stateless Address Autoconfiguration) relies on for its interface identifier.
A typical IPv6 allocation decomposes as: 48 bits of global routing prefix (assigned by the ISP), 16 bits of subnet ID (yours to allocate), 64 bits of interface identifier. The 16-bit subnet ID gives you 65,536 LANs per site — more than most enterprises ever need.
Every IPv6 interface has at least two addresses: a global unicast (the `2001:...` one) and a link-local (`fe80::...`). The link-local address is auto-generated from the MAC or via a privacy algorithm, and it's used for neighbor discovery and routing protocol adjacencies.
You can read and write IPv6 addresses. Next lesson covers address types and scopes.
Finish the lesson once you have worked through the material. This awards ★ 30 XP.