Crash Course in IPv6 (Part 1)

by [Published on 15 Nov. 2006 / Last Updated on 15 Nov. 2006]

An introduction to the IPv6 address space.

If you would like to read the other parts in this article series please go to:

A couple of months ago, I wrote an article for the site called “Get Ready to Run IPv6 (Whether You Want to or not)”. In that article, I explained that both Windows Vista and Longhorn Server will natively run the IPv6 protocol alongside the IPv4 protocol that is so commonly used today. There are several features in these operating systems that simply will not work unless IPv6 is used. That being the case, it probably makes sense to go ahead and learn a little bit about how IPv6 works. If that isn’t a compelling enough reason for you, it has been estimated that the IPv4 address pool will be completely exhausted by sometime around the year 2009. As such, the United States government has mandated that all federal agencies deploy IPv6 for their network backbones by the year 2008. 

As you can see, the IPv6 protocol is about to go from relative obscurity to widespread use in the next couple of years. I am writing this article series as a way of introducing you to the IPv6 protocol. 

The IPv6 Address Space

The most obvious difference between the two protocols is the length of their source and destination addresses. The whole point of making the switch to IPv6 is to compensate for a global shortage of IP addresses. It only makes sense that the IPv6 protocol has a larger address space than the IPv4 protocol does.

The IPv4 protocol uses a 32-bit source and destination address. These addresses are typically represented as a series of four octets. As I’m sure you know, a typical IPv4 address looks something like this:

In contrast, an IPv6 address is 128 bits in length. This allows for a total of 3.4x1038 (or 340,000,000,000,000,000,000,000,000,000,000,000,000)  addresses. There are several different ways of representing an IPv6 address. An IPv6 address is normally written as eight groups of four hexadecimal digits, each separated by colons. For example, an IPv6 address looks like this: 2001:0f68:0000:0000:0000:0000:1986:69af.

You might be looking at the sample address listed above and thinking that typing an IPv6 address involves a lot of effort. Fortunately, IPv6 addresses can be shortened by eliminating zeros. There are two rules that must be followed when condensing an IPv6 address. First, a series of four consecutive zeros can be replaced by two colons, so long as there is only one set of double colons in the resulting address. Using this rule alone, our sample address from above could be condensed to look like this: 2001:0f68::0000:0000:0000:1986:69af

In the example above, we were only able to eliminate one block of zeros because the rule says that there can only be a single set of double colons in an address. Obviously, the sample address above is still a lot to type. Fortunately, the second rule will allow us to make this address a lot shorter. The second rule states that leading zeros in a group can be omitted. What this means is that if a block of four numbers starts with a zero, zero can be removed leaving three numbers in the block. If that three digit block of numbers happens to start with a zero, then the zero can be removed again. The process goes on and on so long as there is a zero in the left-hand position in a block. It’s a little tricky to try to explain the process, so I will demonstrate it below. I will start with our original sample address and then work toward condensing that address.


Notice that in each line, I simply stripped away the leading zero from each section. Since there were several sections containing all zeros, I was able to completely remove the sections and replace them with a double colon. This was only possible because the sections containing all zeros were found in a row. If the sections of zeros had been scattered, then only one set of zeros could have been completely eliminated (because you are only allowed a single set of double colons). All the other sets of zeros would have to be represented as a single zero.

Using IPv6 Addresses in URLs

Although DNS servers make it possible to access a website by using a fully qualified domain name rather than an IP address, it is still a somewhat standard practice to enter an IP address as a part of a URL. For example, my personal website uses the URL, which corresponds to the IP address It would be possible to access my website by entering the following URL:

Most casual Web surfers do not make a habit of entering IP addresses in place of fully qualified domain names. Even so, the practice does exist. This is especially true for private Web applications. Not associating a fully qualified domain name with an application makes it a lot less likely for an unauthorized person to stumble onto the application accidentally.

When an IP address is used in place of a fully qualified domain name, a port number is sometimes specified as part of the address. If you simply enter HTTP:// followed by an address, then your Web browser assumes that you want to use port number 80. However, you can specify any port that you want by appending a colon and the port number to the end of the address. For example, if you wanted to access the website by IP address, and specifically require a port 80 to be used, then the command would look like this:

 The IPv6 protocol can also be used as a part of a URL. If you pay attention to the IPv6 format, you’ll notice that an IPv6 address contains a lot of colons. This poses a bit of a problem since your Web browser typically treats anything after a colon as a port number. That being the case, IPv6 addresses are enclosed in brackets when they are used as a part of a URL. For example, if you were to use our sample IPv6 address in a URL, it would look something like this:

HTTP://[ 2001:0f68:0000:0000:0000:0000:1986:69af]/

Just as you can specify a port number alongside an IPv4 address, you can also specify a port number when using an IPv6 address. The port number follows the exact same format as it does when IPv4 is being used, and falls outside of the brackets. For example, if you were wanting to access the website at our sample IPv6 address over port 80, the URL would look something like this:

HTTP://[ 2001:0f68:0000:0000:0000:0000:1986:69af]:80/

Notice that the port number, in this case 80, falls between the close bracket and the ending slash. A colon is also used to designate the port number, just as it is in the IPv4 protocol.


So far, I have shown you some different ways of representing an IPv6 address. Like the IPv4 protocol, an IPv6 address range can be subnetted. Although the basic concept of Subnetting works in much the same way that it did in the IPv4 protocol, the method of expressing the subnet has changed dramatically. In Part 2 of this article series, I will discuss network notation and subnetting and IPv6. I will also discuss some special addresses (and address fragments), and what they mean in the IPv6 protocol.

If you would like to read the other parts in this article series please go to:

See Also

The Author — Brien M. Posey

Brien M. Posey avatar

Brien Posey is an MCSE and has won the Microsoft MVP award for the last few years. Brien has written well over 4,000 technical articles and written or contributed material to 27 books.


Featured Links