In 1981 a Request for Comments (RFC) 791 was published defining the current version of IP (known as IPv4) which is currently still used today. It used 32-bit addressing, and supported 4.3 billion addresses. Over time IPv4 had to be modified to keep up with the changing technological needs of the Internet, including space (e.g. NAT), routing, prioritized (e.g. TOS), configuration (e.g. DHCP), and security (e.g. IPSec).IPv6 Automatic Tunneling Transition Mechanisms
IP address blocks are assigned to regional Internet registrars by IANA (the Internet Assigned Numbers Authority). Those registrars then assign address blocks to Internet Service Providers (ISPs) and large organizations. ISPs assign their allocated addresses to their customers - companies and individuals - either on a permanent (static) basis or as dynamic addresses that can change if you disconnect from and reconnect to the Internet.
It's important to note, that the last top level blocks (/8) of available IPv4 addresses was assigned in February 2011. Which officially means that after those addresses are distributed, no new IPv4 addresses can be assigned to Regional Internet registries.
IPv4 address exhaustion from 1995 to 2011.
In 1996 an alpha implementation of the IPv6 protocol released. The Internet Engineering Task Force (IETF) created IPv6 (see RFC 2460) to over come the limitations of the current IPv4 protocol, and eventually replace it. Some of the new features include 128-bit addressing (2^128 possible addresses), hierarchical routing (global, regional, and local), automatic configuration, security (e.g. IPsec), prioritized delivery (e.g. TOS) and support for mobile technologies.
IPv6 allows for approximately 340 undecillion addresses It's 10 to the 36th power (one followed by 36 zeros). That's more than 4.8 nonillion (4,857,142,857,142,857,142,857,142,857,142.9) addresses for every man, woman and child on earth
IPv6 Address Format
IPv6 addresses have two logical parts: a 64-bit network prefix, and a 64-bit host address part (the host address is often automatically generated from the interface's MAC address).
128-bit IPv6 Address
An IPv6 address is represented by 8 groups of 16-bit hexadecimal values (the hexadecimal digits are case-insensitive) separated by colons (:) shown as follows:
The IPv6 address can be abbreviated using the following rules:
Note: IPv6 address that start with “fe80” are automatically-assigned link-local address.
There are three major classifications of IPv6 addresses:
IPv6 Address Types
IPv6 Multicast Addresses
For all types of unicast IPv6 addresses the last 64 bits of the address represent the interface ID which is used to identify a unique interface on a local link or subnet. The interface ID for Link-local addressed is generated from the unique 48-bit MAC (Media Access Control) address or the EUI (Extended Unique Identifier)-64 address of the interface. The interface ID for global addresses which is used to create a public IPv6 address, will either be generated from a temporary random identifier (which is used for privacy reasons) or the EIU-64 as the interface ID.
IPv6 Packet Format
The IPv6 packet is composed of two parts: the packet header and the payload. The header consists of a fixed portion with minimal functionality required for all packets and may contain optional extension to implement special features.
The fixed header occupies the first 40 octets (320 bits) of the IPv6 packet. It contains the source and destination addresses, traffic classification options, a hop counter, and a pointer for extension headers if any. The Next Header field, present in each extension as well, points to the next element in the chain of extensions. The last field points to the upper-layer protocol that is carried in the packet's payload.
Extension headers carry options that are used for special treatment of a packet in the network, e.g., for routing, fragmentation, and for security using the IPsec framework.
The payload can have a size of up to 64KB without special options, or larger with a jumbo payload option.
The Internet engineering community have developed several transition mechanisms that will allow network operators to send IPv6 packets over IPv4 networks to allow for a gradual migration to new protocol. One of these mechanisms is known as "Tunneling" which includes the following technologies: 6to4, Teredo and ISATAP.
Compatibility with IPv6 networking is mainly going to be software or firmware issue. Older hardware in principle can be upgraded, but it will likely have to be replaced instead. The recent versions of most operating system (e.g.: Windows, Linux, and OS X) are IPv6-ready. Also most network aware applications will have to be upgraded to support IPv6 from the developers.
Notable IPv6 Historical Events
For more information, check out the following Wikipedia article.
As networking technologies have been upgraded to deal with larger resources, so have other computing technologies evolved to handle new advancements: