Random Daodejing

TCP/IP Notes

Intro  /  Network Addressing  /  Network Addressing IPv6  /  Packet Headers  /  Networking and Data Link Layers  /  Transport Layer Protocols  /  Application Layer Protocols  /  IP Routing  /  ICMP  /  DHCP  /  Name Resolution and DNS  /  Security 


IPv6 supports 128-bit addresses (address space = 3.4 * 10 ^38), whereas IPv4 supports an address space of only 4.3 * 10 ^9.  This is a very large difference.  Essentially this means each individual IPv6 address space is about 4.3 billion times larger than the entire IPv4 address space.
Besides increasing available address space (IPv4 addresses have essentially run out), there are other reasons for the importance of IPv6.  It eliminates the need for NAT (Network Address Translation), and makes configuring and administering IP addresses easier.  It includes in its design more up-to-date routing support, increased security as well as coping with future internet expansions.  Another big change is that mobile computing has been an influence upon the direction of IPv6.
A list of RFCs containing information about IPv6 addressing can be found at:  https://tools.ietf.org/html/rfc5156.

IPv6 Address in hexadecimal
Similar to IPv4 addresses, IPv6 addresses can represent a network interface or network/host portion of a machine.  However, how much belongs to either portion depends on who is looking at it and where it is viewed in relation to the host.  Unlike IPv4 addresses, IPv6 addresses are expressed in hexidecimal notation (00-FF vs. 0-255).  Each hexidecimal digit represents 16 unique values, separated in colons by groups of four 16-bit numbers called "words."
Like IPv4 there is no need to show leading 0's expressed in binary:
1090:0000:0000:0000:0009:0900:210D:325F becomes 1090::9:900:210D:325F
Network and host address portions are represented by "/ decimal" notation in which the decimal part shows the number of left-most contiguous bits in the network prefix.  Each network interface must have it's own unique identifier with the exception of hosts using multiple interfaces where the interfaces share a single identifier.
Random number privacy extensions can mask MAC addresses for network interfaces.  In the future, approaches for changing network interface unique identifiers may change, particularly when derived from MAC addresses (many equipment manufacturers include internal instructions usually based on serial number for generating identifiers).
The use of square brackets ( [ ] ) have been standardized for IPv6 URLs: http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html where "80" represents port #.
Unspecified and loopback addresses are reserved for special usage. Unspecified addresses are all zeroes and can be represented by two colons (::), used for example to send a message requesting addresses from attached routers.  Loopback addresses in IPv6 are all zeroes except for the last bit which is set to 1 (::1).
Multicast addresses in IPv6 are noted by the first byte being set to all 1's (0xFF) with the second byte divided into two fields denoting FLAG (first 3 bits reserved for future use with the last bit set to 1 for "T" flag which is 'identical group IDs but different hosts' or 0 to refer to 'all routers or entire DHCP service'), SCOPE (defines temporary address) and the other 112 bits defining GROUP ID (first 80 bits set to 0 for future use).
Broadcast addresses are abandoned in IPv6.
Anycast addresses
are new in IPv6.   They allow packets to go to the nearest single instance of an address (from the local router's point of view). It takes the same form as a unicast address. I Pv6 creates 'aggregatable global unicast addresses' which combines addresses in router tables.  The first 64 bits (which includes the network portion of the address) are broken into 4 parts for better routing capabilities:
FP - Format Prefix (3-bit identifier)
TLA ID - Top-Level Aggregation ID (13 bits, 2 ^ 13 top level routes)
NLA ID - Next-Level Aggregation ID (24 bits, divides address blocks)
SLA ID - Site-Level Aggregation ID (16 bits, 65,535 addresses or 255 subnets each with 255 addresses)
The IPv6 link-local and site-local address formats are broken into 64-bit interface IDs:
Link-Local 10 bits/54 bits
Site-Local 10 bits/38 bits/16bits (subnet ID)
Address space in IPv6 is 3.4 * 10 ^38 unique values. 1/128 of addresses use NSAP allocation for point-to-point links between hosts, making subnetting generally unrequired but optional.
IPv6 is backward compatible via tunneling, the opposite approach being deprecated.  The transition to IPv6 will be slow in growth due to changing physical devices and firmware which were designed for IPv4.  Current compatibility options include:
Teredo tunneling, which encapsulates IPv6 datagrams in IPv4 UDP packets.
ISATAP (Intra-site Automatic Tunnel Addressing Protocol), which generates a link-local address between IPv6 and IPv4.
6to4 Tunneling, which also encapsulates IPV4.
NAT-PT (protocol translation), which is deprecated.
Further Reading


IPv6 Address Representation and Address Types