tip
~/geeksubnet/guides/ipv6

IPv6 addressing for IPv4 engineers

If you already think in /24s, this maps IPv6 onto what you know. Expand any address in the IPv6 calculator.

IPv6 is not a different discipline — it is the same network/host split with far more bits and a few habits dropped. If you are comfortable with IPv4 subnetting, the conceptual jump is small. The friction is mostly notation and a handful of new prefix types. This guide covers exactly those.

128 bits, written in hex

An IPv6 address is 128 bits instead of 32. Writing that in decimal would be unreadable, so IPv6 uses hexadecimal, grouped into eight 16-bit blocks separated by colons:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Each block is four hex digits (0–f), and each hex digit is 4 bits, so 4 digits × 8 blocks = 128 bits. That is the whole structure.

Compression rules

Two rules shrink the address to something typeable:

Applied to the address above:

2001:0db8:85a3:0000:0000:8a2e:0370:7334
       ↓ drop leading zeros
2001:db8:85a3:0:0:8a2e:370:7334
       ↓ collapse the zero run
2001:db8:85a3::8a2e:370:7334

The :: may appear only once, otherwise the length would be ambiguous. The calculator expands and compresses both ways so you can check your work.

Prefixes, not masks

IPv6 keeps CIDR-style prefixes — /64, /48, /56 — but you almost never write a dotted mask. The prefix length still means "this many leading bits are the network." The strong convention: every subnet is a /64. That leaves 64 host bits, which is enormous, but the size is deliberate — it is what address autoconfiguration relies on.

PrefixTypical use
/64a single subnet / LAN segment
/56a small site (256 subnets) — common home allocation
/48an organisation site (65,536 subnets)
/32an ISP / RIR allocation

The prefix types you will meet

SLAAC and EUI-64

Stateless Address Autoconfiguration (SLAAC) lets a host build its own address from the /64 the router advertises plus a 64-bit interface identifier — no DHCP server required. One classic way to generate that identifier is EUI-64, derived from the interface MAC:

  1. Split the 48-bit MAC in half and insert FFFE in the middle.
  2. Flip the 7th bit of the first byte (the universal/local bit).
MAC          B8:27:EB:01:02:03
flip U/L     BA:27:EB:01:02:03
insert FFFE  BA:27:EB:FF:FE:01:02:03
  →  interface id  ba27:ebff:fe01:0203
  →  link-local    fe80::ba27:ebff:fe01:0203

The MAC tools panel does this derivation for any address. Because EUI-64 embeds the hardware MAC, it leaks a stable device identifier; modern operating systems default to RFC 4941 privacy addresses with random interface IDs that rotate over time.

Two habits you can drop

No NAT. With 264 addresses per subnet, there is no shortage to work around, so hosts get globally routable addresses directly. Network address translation as an addressing crutch disappears (firewalling, of course, does not).

No broadcast. The all-hosts conversations move to well-known multicast groups, which is more efficient because a host only processes traffic for groups it has joined.

Open the IPv6 calculator → ← VLSM Next: subnet mask reference → All guides