The IPv4 Crisis
The IPv4 address space is 32-bit. That means that 32 bits, four bytes, are available to store and denote an IP address. It’s written in something called dotted-quad notation, with values for each part ranging between 0-255. For example:
192.168.10.12 - VALID
192.168.10.456 - INVALID (last part outside 0-255 range)
Fairly simple stuff, really. The important part here is that we have four ‘parts’ of one byte each, for a total of 32 bits. The largest decimal number that can be represented with 32 binary bits (1 repeated 32 times) is 232 – a grand total of 4,294,967,296. Let’s just clarify that with some bold text. Bold text – like the humble fez – is cool.
Without sneaky workarounds, the Internet can only support just over four billion connected devices.
That’s a big number, but it’s not big enough. Firstly, due to protocol restrictions, certain addresses are reserved for special purposes, dropping that number. Also, the world’s population is just under seven billion. With the rate that the Internet is growing, we need at least one address per person. However, it’s not that simple – due to the way blocks of addresses have been allocated, and the way certain devices and applications work, we are very, very close to exhausting the entire address space right at this very moment.
This is a remarkably bad thing. But there’s a solution.
Enter IPv6
Specified in RFC 2460, IP version 6 was designed to address the address space shortcomings of IPv4 – but there’s more to it than that. IPv4 is quite a basic protocol, and IPv6 pulls a lot of features that live on top of IPv4 (like autoconfiguration and IP mobility) into the IP layer itself. This adds manageability and functionality without needing a user to install a whole lot of third-party software – everything sits in the operating system’s IPv6 stack.
Chances are that the operating system that you’re using right now has support for IPv6. Windows has had strong support since Windows XP, Linux has supported IPv6 for a very long time, and Mac OS X has had an excellent stack- the KAME stack from FreeBSD – since Tiger (10.4).
An IPv6 IP address looks very different to an IPv4 address. It is referred to as an AAAA record in DNS (in contrast to IPv4′s A record). Here’s Geekosaur’s -
2001:1b90:1001:208:b00b::2
What you see here is an abbreviated version of an IPv6 address. Any string of consecutive zeros can be represented by a double colon – but this can be done once and only once (otherwise, the expansion would be ambiguous). Also, leading zeros in a segment (as separated by colons) can be stripped, in the same way that if I were to write ’23′ and ’00000023′ they would be the same number. To give the full IPv6 address of this site -
2001:1b90:1001:0208:b00b:0000:0000:0002
Decimal notation, as used in IPv4, is shunned in favour of hexadecimal notation to keep addresses shorter. Each segment contains four hexadecimal digits between 0 and f (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f) and there are eight segments in a full address.
So how many addresses do we have to play with? Easy answer – 2128 before any losses to special use cases. That’s a lot of addresses. To be exact, it’s this many addresses -
340,282,366,920,938,463,463,374,607,431,768,211,456
Read more: Geekosaur