4.3.11 · D5Computer Networks

Question bank — IPv6 — address format, why needed, key differences

1,658 words8 min readBack to topic

Before we start, one shared picture to argue against. Every IPv6 address is 128 on/off switches, chopped into 8 groups of 16 switches each. Each group of 16 switches is written as 4 hex digits (because one hex digit = 4 switches). Keep that picture in mind — most "traps" below come from forgetting how many switches are actually there.


True or false — justify

Every "false" here hides a subtle wrong assumption. Don't just flip the truth value — name the assumption that broke.

IPv6 has times as many addresses as IPv4, so it is " times bigger".
False. It is times bigger, not times. — the exponent is the count of extra switches (128−32=96), and each extra switch doubles the space, so growth is multiplicative, not additive.
An IPv6 address must always be written as 8 full groups of 4 hex digits.
False. That is only the uncompressed form. The leading-zero rule drops zeros inside a group and :: collapses one all-zero run, so 2001:db8::1 is a perfectly valid full address — the missing switches are still all there, just not typed.
You may use :: as many times as you like as long as the result is shorter.
False. :: means "insert as many all-zero groups as needed to reach 8 groups." With two :: the parser cannot decide how many zeros belong to each gap, so the address becomes ambiguous and illegal. Only one :: per address.
:: can also stand in for a single all-zero group like 0000.
True, and legal — :: may replace even one zero group (e.g. 2001:db8:0:1:1:1:1:12001:db8::1:1:1:1:1). But by convention you use it on the longest run; using it on a single group when a longer run exists is allowed but poor style.
IPv6 removed broadcast because there was no room for a broadcast address in 128 bits.
False. Space was never the reason — there is plenty. Broadcast was removed because "shout to everyone" is wasteful; IPv6 replaces it with multicast (only subscribers hear) and anycast (nearest member hears). See Multicast vs Broadcast vs Anycast.
Because IPv6 dropped the header checksum, packets are now more likely to be delivered corrupted.
False. The checksum was dropped from the network-layer header only because it duplicated work already done at Layer 2 (link, e.g. Ethernet CRC) and Layer 4 (TCP/UDP checksum). Integrity is still checked — just not redundantly at every router. See OSI & TCP-IP Model — Network Layer.
IPv6's fixed 40-byte header means an IPv6 packet can never carry optional information.
False. Options moved out of the main header into chained extension headers placed after it. The main header stays a fixed 40 bytes for fast routing; routers skip extensions they don't care about. See IP Header Structure.
Since IPv6 is a total redesign, an IPv6 host cannot talk to an IPv4 host.
True in the raw sense — the two are not wire-compatible; a pure IPv6 host and pure IPv4 host cannot exchange packets directly. In practice transition mechanisms (dual-stack, tunnelling, translation) bridge them, but that is extra machinery, not automatic.
NAT is impossible in IPv6.
False. NAT is usually unnecessary because addresses are abundant, but NAT66/NPTv6 exist. The point is IPv6 removes the need that forced NAT in IPv4 (address scarcity), not the technical possibility. See NAT (Network Address Translation).

Spot the error

Each line has exactly one thing wrong. Find it and state the correct version.

2001:0db8:0000:0000:0000:ff00:0042:8329 compresses to 2001:db8::ff00::8329.
Two :: — illegal. The single longest zero-run (three 0000 groups) gets one ::; the 0042 group is not zero and must be written (as 42). Correct: 2001:db8::ff00:42:8329.
fe80:0:0:0:204:61ff:fe9d:f156 shortened to fe80:0::204:61ff:fe9d:f156.
Redundant. Once you use :: you shouldn't also leave a stray 0 that the :: could absorb. Correct: fe80::204:61ff:fe9d:f156 — the :: swallows all three zero groups.
"An IPv6 address is 8 groups of 16 hex digits."
Wrong unit. It is 8 groups of 16 bits, and each 16-bit group is written as 4 hex digits (16 bits ÷ 4 bits-per-hex = 4). "16 hex digits" would be 64 bits per group.
"The loopback address ::1 means all 128 bits are 1."
Opposite. ::1 is 127 zero bits followed by a single 1 bit — the :: fills zeros, and the final group is 0001. All-ones would be ffff:ffff:...:ffff.
"Prefix /64 means the address uses only 64 bits total."
No. The address is still 128 bits; /64 says the first 64 bits are the network prefix and the remaining 64 are the interface ID. See Subnetting and IPv4 Addressing & CIDR.
"ff00::0042 — I'll drop the leading zeros: ff::42."
ff00 has no leading zeros, so it cannot shrink; the zeros are trailing inside the group and are significant. Only 004242 is valid. Correct: ff00:...:42. Leading means left-most.
"Two hex digits encode one byte, so 8 groups = 8 bytes."
Each group is 4 hex digits = 2 bytes, and there are 8 groups → 16 bytes = 128 bits. "8 bytes" would only be 64 bits.

Why questions

These ask for the reason, not the fact. The reasoning is the point.

Why hexadecimal rather than decimal for writing IPv6?
Because , so one hex digit maps exactly to 4 bits. This keeps the text bit-aligned (32 hex digits = 128 bits) and compact. Decimal has no clean power-of-two alignment. See Hexadecimal and Binary Number Systems.
Why did IPv6 choose a 64/64 split (prefix vs interface ID) specifically?
A 64-bit interface ID is large enough to be derived from a 48-bit MAC address via EUI-64, which lets a host autoconfigure its own address with SLAAC, no DHCP server needed. See DHCP and SLAAC.
Why is the exact count of IPv4 addresses?
Each of the 32 bits is an independent on/off choice; by the multiplication principle, independent binary choices give outcomes, so 32 bits → billion.
Why does moving fragmentation to "the sending host only" speed up the network?
Routers no longer split packets mid-path; they just forward. Fewer per-packet decisions at every hop means faster forwarding, and the host (which knows the path MTU) fragments once up front.
Why can't we "fix" IPv4 exhaustion just by using NAT forever?
NAT hides many devices behind one public address, but it breaks true end-to-end reachability (incoming connections, peer-to-peer) and adds state to routers. IPv6 restores end-to-end addressing by simply having enough addresses.
Why doesn't IPv6 need a broadcast address for tasks IPv4 used broadcast for (like "find everyone")?
Those tasks are served by well-defined multicast groups (e.g. all-nodes, all-routers). A message reaches exactly the interested set instead of interrupting every device on the link.

Edge cases

The scenarios you must not be surprised by.

What is the compression of the all-zeros address 0000:0000:0000:0000:0000:0000:0000:0000?
:: — a single :: collapses the entire run of eight zero groups. This is the "unspecified" address, meaning "no address yet".
If an address has two zero-runs of equal length, which do you compress?
By convention, the first (left-most) longest run. E.g. 2001:db8:0:0:1:0:0:12001:db8::1:0:0:1, never two ::.
What happens to a group that is 0000 but sits between two non-zero groups with no other zeros around it?
It can be written as a single 0 (leading-zero rule) or, if it is the longest run, replaced by ::. A lone isolated zero group is a valid (length-1) run for ::.
Does the loopback ::1 prove the whole address is only 2 bits long?
No. ::1 is still 128 bits — 127 zeros + one 1. Compression hides zeros; it never changes the true length.
Is fe80::/10 a routable, globally-unique address?
No. fe80::/10 is link-local: auto-assigned, valid only on the local link, and never forwarded by routers. Every interface has one for local housekeeping.
Can :: ever appear at the very start or very end of an address?
Yes. Leading zeros compress to a start :: (as in ::1), and trailing zero groups compress to an end :: (as in 2001:db8::). It just can't appear twice.

Recall One-line self-test

Say why "IPv6 is just IPv4 with longer addresses" is wrong. Answer ::: It also removed broadcast, removed the header checksum, fixed the header at 40 bytes, restricted fragmentation to the sending host, and added SLAAC autoconfiguration — a redesign, not a bigger field.


Connections

  • 4.3.11 IPv6 — address format, why needed, key differences (Hinglish)
  • IPv4 Addressing & CIDR
  • Subnetting
  • NAT (Network Address Translation)
  • DHCP and SLAAC
  • Multicast vs Broadcast vs Anycast
  • IP Header Structure
  • Hexadecimal and Binary Number Systems
  • OSI & TCP-IP Model — Network Layer