← Module 03 · Layer 3: Network

IPv6 Addressing & Header Basics

IPv4 has roughly 4 billion addresses, and the internet ran out of the easy ones years ago. IPv6 isn't a patch, it's a wholly bigger address space with a cleaner header to match.

Why 128 bits instead of 32

IPv4's 32 bits cap out at about 4.3 billion possible addresses, and between phones, laptops, IoT (Internet of Things) devices, and servers, that ran out long ago (NAT, or Network Address Translation, the topic later in this module, is largely the industry's workaround for that shortage). IPv6 uses 128 bits: roughly 340 undecillion addresses, enough that every device anyone will ever build can have its own globally unique address with room to spare.

How an IPv6 address is written

An address is written as eight groups of four hex digits separated by colons, like 2001:0db8:0000:0000:0000:ff00:0042:8329. Two shorthand rules make that readable:

Compressed, that same address becomes 2001:db8::ff00:42:8329.

No more broadcast: Multicast does that job now

IPv6 has no broadcast address at all. Anything that used to rely on a broadcast in IPv4 (including ARP, or Address Resolution Protocol) is handled by multicast instead, sent to a specific group of interested listeners rather than flooded to everyone. Address resolution, the IPv6 equivalent of ARP, is a multicast-based protocol called NDP (Neighbor Discovery Protocol).

IPv4IPv6
Address length32 bits128 bits
NotationDotted decimal (192.168.1.1)Hex, colon-separated, compressible (2001:db8::1)
BroadcastYesNone, replaced by multicast
Address resolutionARP (broadcast)NDP (multicast)
HeaderVariable length, header checksum, supports fragmentation fieldsFixed 40 bytes, no checksum, simpler and faster to process per hop
IPv4: 32 bits 192.168.1.1 IPv6: 128 bits 2001:0db8:0000:0000:0000:ff00:0042:8329
Same visual scale, four times the bit width. That's the entire reason IPv6's address space is astronomically larger.
ONE ADDRESS TYPE YOU'LL SEE ON EVERY DEVICE

Every IPv6-enabled interface automatically gets a link-local address starting with fe80::, whether or not it has any other address configured. It's only valid for communicating with devices on the same physical link, but protocols like NDP depend on it existing. You'll see it even on a device with no internet connectivity at all.