# Windows Server 2012 R2 Inside Out: Networking with TCP/IP

• 5/7/2014

## Understanding IPv6

As with IPv4, the most important thing IPv6 gives you is the IPv6 address. Although IPv4 allows for more than 4 billion networked devices, the world is running out of available IPv4 addresses. To resolve this problem, IPv6 uses 128-bit addresses, and this allows for 340,282,237,000,000,000,000,000,000,000,000,000,000 addresses—give or take a few hundred million quadrillion addresses. Put another way, IPv6 makes available enough IP addresses so that every person on 100 billion worlds of 100 billion people could have 34 quadrillion IP addresses (and there would still be 2.8236 x 10^33 IP addresses left over).

Keeping track of so many IPv6 addresses using the numbering scheme used with IPv4 is impractical. This is why IPv6 uses hexadecimal numbers rather than decimal numbers to define the address space. This means that instead of allowing only the numbers 0 through 9 for each position in the IP address, IPv6 allows the values 0 through 9 and A through F, with A representing 10, B representing 11, and so on, up to F representing 15. Therefore, the values 0 through 15 can be represented using the values 0 through F.

IPv6’s 128-bit addresses are divided into eight 16-bit blocks delimited by colons. Each 16-bit block is expressed in hexadecimal form. With standard unicast IPv6 addresses, the first 64 bits represent the network ID and the last 64 bits represent the network interface. An example of an IPv6 address follows:

`FE80:0:0:02BC:00FF:BECB:FE4F:961D`

Because many IPv6 address blocks are set to 0, a contiguous set of 0 blocks can be expressed as “::”, a notation referred to as the double-colon notation. Using double-colon notation, the two 0 blocks in the previous address are compressed as follows:

`FE80::02BC:00FF:BECB:FE4F:961D`

Three or more 0 blocks would be compressed in the same way. For example, FFE8:0:0:0:0:0:0:1 becomes FFE8::1. However, more than one double-colon abbreviation in an address is invalid because it makes the notation ambiguous. Also, leading zeros in a group can be omitted. Thus, FE80::02BC:00FF:BECB:FE4F:961D can be shortened to FE80::2BC:FF:BECB:FE4F:961D. Following this, the following addresses are all valid and equivalent:

• FE80:0000:0000:02BC:00FF:BECB:FE4F:961D
• FE80:0:0:02BC:00FF:BECB:FE4F:961D
• FE80::02BC:00FF:BECB:FE4F:961D
• FE80::2BC:FF:BECB:FE4F:961D

Finally, you can write a sequence of 4 bytes at the end of an IPv6 address in decimal, using dots as separators. You can use this notation with IPv4 compatibility addresses, such as FE80::192.168.10.52.

As with IPv4 addresses, there are different types of IPv6 addresses. As Table 2-11 shows, the type of an IPv6 address is identified by the high-order bits of the address. Link-local unicast IPv6 addresses are the equivalent of IPv4 private addresses because they are not globally reachable on the Internet. Global unicast IPv6 addresses are the equivalent of IPv4 public addresses because they are globally reachable on the Internet and must be assigned by an IP address authority.