Discussions about the IPv6 nearly always have the same initial questions such as
1) use of Hex
2) size of addresses (and reasons)
3) why would everything need to be public
For (1) IPv4 would actually have been more regular for processing and comparing if originally represented in hex,
as all addresses could be stored as exactly 8 digits (with leading 0s).
Subnetting on 4-bit boundaries would look consistent, with sizes of 16 (lab), 256 (normal) or 4K (large) being naturally convenient.
Regarding (2) different sizes were discussed (such as 48*/64/80/96/128).
Realistically you would need a minimum 64-bit space to provide enough of a step in future proofing expansion. Even at 64-bit you would need to continue with variable length network prefix vs host portions of address to provide enough hierarchical networks and route aggregation.
(*) For comparison NAT masquerade is roughly equivalent to stretching IPv4 from 32-bit to a pseudo 40-42 bit address space based on parking 250-1000 hosts behind a single public IP; more than that risks not having a reliable pool of spare ports for new TCP/UDP connections.
The 128 bits are rarely evaluated in one go, more like 16-64 bits at a time for most usage.
The first 2 hex digits (8 bits) are now enough to classify the type of address (multicast, unicast, global, unique local, bogon ….) for a host or router to make some initial decisions on how to treat it.
One could describe the unicast network prefix/host split as scaling of (Class B)⁴.
The host portion being 64-bits was never about having that many hosts in a subnet, but supports enough bits to allow hosts to self-assign addresses on each interface that enables IPv6 (including both MAC address - based and randomised private options).
A key point is that IP addresses are assigned to a host's network interfaces (rather than the host) - this is also true of IPv4 btw but less obviously so when describing computers.
And that these addresses have scope (up to what boundary are they valid) so multiple addresses become normal by design rather than by exception.
Regarding (3) originally all IPv4 addresses would be global, but whether it was public or private would depend on whether the hosts were behind firewalls.
IPv6 restores that - an address being of globally routeable scope does not mean they are all public. If your gateway is a stateful firewall (the default convention for dual stack) the LAN behind it is private as regards inbound connections.
However ULAs (fdxx) also provide equivalent of private scope address space where you don't want the IP to be routeable outside networks you control and the flexibility to assign these alongside (or instead of) the global addresses.
They are commonly used to provide "well-known" addresses for LAN services which then do not depend on any network prefix from by the upstream provider (ISP) and so can be reliably persistent for your internal DNS.
prlzx on Zen: FTTC (VDSL) at ~40Mbps / 10Mbps
with IP4/6 (no v6? - not true Internet)
Edited by prlzx (Sun 07-Feb-21 00:06:11)