# An Introduction to IPv6

Jun 6, 2011
Updated • Jun 7, 2011

Right now, most of the world is using IPv4 (Internet Protocol version 4). The problem is that it does not allow for enough addresses. The world is just too big of a place. Enter IPv6. It provides vastly more addresses (2^128) and is the future of the web. Most users will not notice a difference, but networking personnel will (you can test your IPv6 connectivity here)

An IPv6 address has a few differences from IPv4. The first is that it is in hexadecimal instead of decimal. The second is that it is split up into larger segments and more of them. The third is that it uses colons (:) rather than periods (.) to divide these segments. In the end, one does not resemble the other. This is good because it prevents confusing the two.

Hexadecimal is better than decimal for a few reasons. For one, it takes up less space. The number "255" is "FF" in hex; that is %50 smaller. Hexadecimal also relates more closely to binary. The number "1111" is "15" in decimal but "F" in hex. So "11111111" is "FF" in hex, which is a much cleaner conversion than "255" is. The downside is that humans typically think in decimal, so working with hex takes some getting used to.

IPv6 has a much larger address size. It has eight sections to it. IPv4 had half of that. The sections themselves are larger too: each one has four digits. IPv4 could only have three, and that only went to 255 tops. It should be obvious why this new address can afford all the room we have come to need. Hopeful it will for a long time. Here is a sample address.

FF00:00FF:0000:0000:0000:02f3:0000:0001

At this point, you may begin to see the down side to IPv6: it is long and hard to remember. To make them more human readable, there are a few conventions to short address when you have a lot of zeros present. First of all, you can skip leading zeros, so "0001" becomes "1" and "02f3" becomes "2f3" (IPv4 did this too). Second, groups of all zeros can be abbreviated to "::" (a double colon) once; you put nothing there. That makes ":0000:0000:0000:" reduce to "::" but ":0000:" cannot as it would be ambiguous. You can apply the first rule, making it ":0:" now. Putting all these rules into place gives us the following address.

FF00:FF::2f3:0:1

This address is about as long as an IPv4 number. Notice how the "00FF" shrank to "FF" and the "FF00" did not. That was done intentionally to show the difference between leading and trailing zeros.

There is one more thing you really need to know if you are working with IPv6. The loop-back address, which was 127.0.0.1 in IPv4, is ::1 now. It works exactly the same way. You will have to use the ping6 command in Windows or Linux, so ping6 ::1 is what you would type into the command line. This will give many XP users an error as IPv6 may not be enabled on your computer. We have guides on how to enable IPv6 in XP, and how to assign IPv6 addresses in Linux.

Some other factoids about IPv6 are that it has is easier to route, more secure, and works better with mobile technology. There are changes to the way the packets of information are sent that makes it more efficient (e.g. better headers). It is more secure because it requires the use of IPSec, which is only optional in IPv4. IPv6 has an address recovery system, so when you change locations, it tries to keep the same address. These are are some of the that US government is switching over to it.

I should note that IPv6 has been found to have vulnerabilities. Malware tunneling is described in an article (note: a .pdf file) from the us-cert.gov site. It often has to do with how firewalls are configured. Different sources may give different opinions on how secure IPv6 is.

Wondering what happend to IPv5? It did exist. It was developed in the 1970's to be used in audio and video streaming. It was called the Internet Stream Protocol. It did not get far past the experimental stage and was never adopted. Ideas from it helped to form IPv6.

Previous Post: «
Next Post: «

1. Brian Dao said on June 2, 2012 at 6:03 am

FF00:FF::2f3:0:1

Actually, it’s a lot longer than IPv4, even in the compressed format.

2. Justin said on June 8, 2011 at 5:21 pm

Correction: ping6 is not a valid command. In Windows, ping -6 is the proper syntax.

1. Brian Dao said on June 2, 2012 at 6:05 am

I think he meant ping6 command in Linux.

3. Luis G. Uribe said on June 7, 2011 at 5:52 am

Hi:

The frase: ‘The number â€œ255â€³ is â€œFFâ€ in hex; that is %50 smaller’ is not accurate. FF is 33% smaller than 255. However… 255 is 50% larger than FF.

4. Dougle said on June 7, 2011 at 5:39 am