Question bank — IPv6 — address format, why needed, key differences
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".
An IPv6 address must always be written as 8 full groups of 4 hex digits.
:: 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.
:: 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.
:: may replace even one zero group (e.g. 2001:db8:0:1:1:1:1:1 → 2001: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.
Because IPv6 dropped the header checksum, packets are now more likely to be delivered corrupted.
IPv6's fixed 40-byte header means an IPv6 packet can never carry optional information.
Since IPv6 is a total redesign, an IPv6 host cannot talk to an IPv4 host.
NAT is impossible in IPv6.
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.
:: — 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.
:: 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."
"The loopback address ::1 means all 128 bits are 1."
::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."
/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 0042→42 is valid. Correct: ff00:...:42. Leading means left-most."Two hex digits encode one byte, so 8 groups = 8 bytes."
Why questions
These ask for the reason, not the fact. The reasoning is the point.
Why hexadecimal rather than decimal for writing IPv6?
Why did IPv6 choose a 64/64 split (prefix vs interface ID) specifically?
Why is the exact count of IPv4 addresses?
Why does moving fragmentation to "the sending host only" speed up the network?
Why can't we "fix" IPv4 exhaustion just by using NAT forever?
Why doesn't IPv6 need a broadcast address for tasks IPv4 used broadcast for (like "find everyone")?
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?
2001:db8:0:0:1:0:0:1 → 2001: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?
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?
::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?
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?
:: (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