The huge data communications network that wraps around our planet which is known as the “Internet” is considered by many one of mankind’s greatest invention and accomplishments. The ability to share information from any location on the planet to any other location within within seconds has changed the way we live since the days of messengers riding horses through rough lands to deliver a letter. However since the dawn of the internet we have been faced with many challenges and yet we as a race have created solutions to proceed forward. While these solutions sometimes are not permanent, but rather “band-aid” like it still serves its purpose for technological evolution. After all trial and error is how we learn right? If you attempt to complete a task and fail you try again until you’ve succeeded.
In the early days of the birth of the internet, IP version 4 was thought to be “inexhaustible”. After all who in those days could ever see 4.3 billions logical addresses ever used. Sadly when the internet was young many people did not envision a PC in every home and access to the internet on every cell phone which today has pushed the IPv4 address space on the brink of exhaustion.
In the early 1990’s various experts noticed that the IPv4 address space was being allocated at an alarming rate and calculated exhaustion within years. A new IP addressing scheme known as “IP Next Generation” (IPng) was in its early development stages however it was noted that standardizing such proposed solutions would take considerable time. So therefore such alarming allocations of IPv4 address space gave birth to Network Address Translation (NAT); Also known as the band-aid of IPv4. When deployed in a Port Address Translation manner (a type of NAT) it allowed for many internal IP private addresses (RFC1918 Addressing) to be translated to a single outside address thus easing the demand on the IPv4 address space.
This ultimately slowed down the allocations of the IPv4 address space but did not stop it. NAT in and of its self has become a standard in today’s modern networks. In today’s world you will have a hard time finding a network that does not utilize Network Address Translation in one way or another. As the internet continues to grow day after day with the addition of new cellular devices, tablets, wireless devices and IP enabled smart home which allows you to control several aspects of your home appliances such lights, refrigerators, heating and air conditioning equipment and more the requirement for IP addressing will continue to grow.
There are several parts of the world that use layers and layers upon Network Address Translation because there simply is not enough IPv4 address space for everyone. China alone can easily consume over a quarter of the IPv4 address space and still not have enough addressing to cover all devices in the country. The same applies to India.
The standards of IPv6 were completed several years ago and it is only recently that companies and organizations have taken interest into migrating from IPv4 to IPv6. One of the two driving factors of a global IPv6 migration is that Network Address Translation stifles innovation in areas such as peer-to-peer networking, grid computing, end-to-end security, global quality of service guarantees and internet access through mobile devices such as cell phones and tablets.
IPv4 us made up of a 32-bit number represented by 4 decimal octets and has a maximum address space of roughly 4.3 billion addresses. IPv6 on the other hand uses a 128-bit address making 340 trillion trillion trillion IP addresses available. to be exact the number is;
In a nut shell that is enough IP address space to assign an entire IPv4 address space (4.3 billion IP addresses) to every man woman and child and barely put a dent in the IPv6 address space.
There are approximately 79,135,434,167,660,000,000,000,000,000 IPv4 address spaces (4.3 billion) in the entire IPv6 address space.
IPv6 addresses are different then IPv4 address in many ways and not just in length. You should already know the representation of the IPv4 address which is a 32-bit number represented by a 4 decimal octet number such as “192.168.21.82“. IPv6 however is represented by a HEX address such as; “2002:1834:0110:0394:AF3E:2501:36FF:0A0B“
That is going to be quite a hard number to memorize, IPv6 will rely heavily on DNS (Domain Name System) in the future which translates names to IP addresses. such as ipv6.google.com to 2001:4860:b002:0000:0000:0000:0000:0068
There are a two representation rules that will help make engineers lives so much easier when dealing with IPv6 addressing. The first one being concatenation of the IPv6 address. This gives an engineer the ability to collapse an IPv6 address to a shorter, easier to write IPv6 address. The basic rule states that the multiple zeros in any 16-bit segment do not have to be written and if any 16-bit segment has fewer then four hexadecimal digits it is then assumed that the missing digits are leading zeros and can collapsed to using the double semicolon “::” However this method can only be used ONCE.
For an example; 2001:1934:0101:0000:0000:0000:0000:0035 can be shorted to 2001:1934:0101::35
The placement of the double semicolon does not matter as long as it is used only once. Take for example the following IPv6 address;
2001:A0D3:0000:0000:0343:0000:0000:0323 can be represented as either;
2001:A0D3::0343:0000:0000:0323 or 2001:A0D3:0000:0000:0343::0323
If you use the double Semicolon more then once it can invalidate the IP address in a way that multiple IP Addresses can be derived from it. For example;2001:A0D3::0343::0323 can be any translated to any of the following addresses;
Some IPv6 addresses can be shorted to as little as 5 hexadecimal characters. For example; ff01:0000:0000:0000:0000:0000:0000:0005 can be written as ff01::5
The second rule that allows an engineer to shorten the written notation of an IPv6 address is the ability to not write leading 0’s in an IP address. For example;2001:A0D3:0032:0000:0000:0000:0000:0023 can become 2001:A0D3:32:0000:0000:0000:0000:23 and can be further shortened with the double semicolon to 2001:A0D3:32::23
Keep in mind when using this method that trialing zeros CANNOT be omitted in written notation as this would change the absolute number of the IP Address. For a basic example; HEX: A0 is 160 in decimal format. If you omit off the trailing zero to A it then becomes 10 and not 160 thus changing the number.