Internet Protocol version 6 (IPv6) Basics


Jarret W. Buse

Internet Protocol version 6 (IPv6) Basics

The Transmission Control Protocol/Internet Protocol (TCP/IP) is a widely used networking protocol, currently version 4. Its use on the Internet has broadened its popularity since it is the only protocol used on the Internet. Since the original use of the protocol was for military purposes there was no thought of growth. TCP/IP uses IP Addresses to manage delivery of information from one host to another. Internet Protocol version 4 (IPv4) has a limited number of available addresses specifically 4,294,967,296 addresses. With the division of addresses to the whole world, some countries have depleted their addresses.

A new version of the Internet Protocol (IP version 6), the limited number of addresses has been rectified. IPv4 used 32-bits to represent the address while IPv6 uses a 128-bit address.

NOTE: For more information on IPv4 see the articles: TCP/IP Internet Layer Protocols, Netmasking Transmission Control/Internet Protocol (TCP/IP) and TCP/IP: Classless Inter-Domain Routing (CIDR).

With IPv4 four octets were used for the address, each separated by a period. An IPv4 address example is: Each octet, or number, is represented by eight bits. An octet is eight bits making the total of four octets or 32-bits.

On the other hand, IPv6 uses 128-bits making a total number of addresses 3.4x10 to the 38th power. An IPv6 Address is made up of eight groups of four hexadecimal digits. Each hexadecimal digit converts to four binary numbers. All of this makes the IPv6 Address a total of (8 groups) x (4 hex digits) x (4 bits) = 128 bits.

Let’s look at an example: 1234:5678:9ABC:DEF0:1234:5678:9ABC:DEF0.

Let’s quickly try to break down hexadecimal (hex) values. Hex values range from 0 to F or basically 0 through 9 and then A through F. The values are as follows:

Decimal  Hex  Binary
0        0    0000
1        1    0001
2        2    0010
3        3    0011
4        4    0100
5        5    0101
6        6    0110
7        7    0111
8        8    1000
9        9    1001
10        A    1010
11        B    1011
12        C    1100
13        D    1101
14        E    1110
15        F    1111

Binary values are found by using the place values of 8 4 2 1. An example would be 10 which using the numbers 8, 4, 2 and 1 we would add 8 and 2. The place values for 8 and 2 would be ones while the others were zeroes making a binary value of 1010.

Looking at one group in the IPv6 Address, specifically 1234, we would produce the following binary number for the group: 0001001000110100. One group is 16 bits and 8 groups make a total of 128 bits (just in case you still aren’t sure). Let’s do the above IPv6 Address as binary as follows:

0001001000110100:0101011001111000:1001101010111100:1101111011110000: 0001001000110100:0101011001111000:1001101010111100:1101111011110000

The series repeats since the first four groups repeat again in the last four groups, but this shows how it works.

IPv6 has address abbreviation. Address abbreviation is made up of two different methods which can be combined.

The first method is that in a group, leading zeroes can be dropped. For example, if one group was made up of 0025 the group could be written as 25. Let’s look at a full example: 0025:5470:000A:4875:9500:0574:0ABD:000F
could be written as follows: 25:5470:A:4875:9500:574:ABD:F

The second method is when a group is made up of all zeroes. The method can only be used once within an address and is used in the place of the most consecutive groups of zeroes. What occurs is that the groups of zeroes are dropped and two colons are used to represent where the groups were dropped as shown: 0025:0000:0000:0000:9500:0574:0ABD:000F
would become: 0025::9500:0574:0ABD:00F

Now, if we include method one as well, we get the following: 25::9500:574:ABD:F

The reason that method two can only be used once is that there are only eight groups. When one set of consecutive groups are dropped you can tell how many groups were dropped and where. If two groups were dropped you can only tell how many groups go where when one group was dropped from two different places (but still not allowed):
0025:0000:4859:0000:9500:0574:0ABD:000F could be, but is not allowed: 0025::4859::9500:0574:0ABD:000F

Now, if we had a case such as the following, it is easier to see the problem:
0025:0000:0000:4580:0000:0000:0ABD:000F becomes 0025::4580::0ABD:000F. Here, we have a problem since there are two groups abbreviated. There are four groups remaining and four groups need to be added. Do we add 1, 2, or 3 groups of zeroes to the first abbreviated group or the second? This is why the second method can only be used once. The last example should become: 0025::4580:0000:0000:0ABD:000F and then abbreviated with method one to be 25::4580:0:0:ABD:F.

It is possible to nearly abbreviate the whole address such as the Loopback Address for IPv6: 0000:0000:0000:0000: 0000:0000:0000:0001 becomes ::1.

Now that we have addressing covered we can discuss compatibility. IPv4 and IPv6 systems cannot communicate with one under normal situations. For example, if a host is running IPv4 and a web server is only running IPv6, the two hosts cannot communicate. If the web server is running both IPv4 and IPv6 it can communicate with the IPv4 host. The two protocols can be installed and enabled on the same system so communications can occur with all TCP/IP systems. It is also required that all devices on the Internet be IPv6 compatible. Once all devices are IPv6 compatible, then IPv4 can be dropped.

The reason for the incompatibility is that the IPv6 header has been changed. The change is to minimize processing by routers to increase throughput. Each IPv6 header contains 320 bits while an IPv4 header is 160 bits in size.

Since the main change has really been the IP Addressing, all protocols dealing with IP Addressing were also changed, such as FTP. Any protocols not dealing with addressing are the same as IPv4.

Other changes were made with IPv6, such as the payload size. The payload size is the amount of data included within the frame. For a comparison, IPv4 has a payload of 65,535 octets or 65 KB. IPv6 has a maximum payload of 4,294,967,295 octets or 4 GB. A payload of 4 GB is referred to as a Jumbo-gram.

A term used in IPv4 is Time To Live (TTL). TTL is a counter, maximum of 255, which is decremented by one every time the frame passes through a router. When the TTL reaches zero the frame is deleted and an ICMP message is sent back to the sender to notify the system the frame is undeliverable. With IPv6, the term is now called Hop Limit. A Hop is when the frame reaches a router and the count is decremented. If, for example, there were 21 routers between a system and a webserver, each frame would travel 21 hops.


  • slide.jpg
    30 KB · Views: 94,680


Amol Patil

Thanks Jarret.
Are there any additional hardware requirements to implement IPv6 ? and
how can we make the IPv4 and IPv6 communicate together ?

Jarret W. Buse

There are no special hardware requirements. If you can run IPv4 then you can also add IPv6. For checking IPv6, see this article. (click on the link)

IPv4 and IPv6 do not communicate with one another. They are incompatible because of the header changes. If a web server is running IPv6 only, then a client running IPv4 cannot connect to it. This is why most servers and clients should be running both IP versions.

Hope this helps.

Amol Patil

Thanks Sir...
I am currently learning Microsoft Server OS along with CCNA.
I will be your first student to ask any queries ahead..!
$100 Digital Ocean Credit
Get a free VM to test out Linux! Hosting Donations
Consider making a donation

Members online