IPv4, upon which our ability to communicate is presently dependent, is going to run out of addresses for us to use. IPv4 has only about 4.3 billion addresses available-in theory, and we know that we don't even get to use all of those. There really are only about 250 million addresses that can be assigned to devices. Sure, the use of Classless Inter-Domain Routing (CIDR) and Network Address Translation (NAT) has helped to extend the inevitable dearth of addresses, but we will run out of them, and it's going to happen within a few years.
To be honest with you, the theme about IPv6 is a little bit like the theme for the global warming. Probably most of you (like me) have own public IP at home. But this is the way of thinking "Well, I have aircondition too, so I don't care about the global warming". I can't imagine what a disaster can be some hurricane, but I can imagine what a disaster will be if some day I can't connect to the NET, because all of the IPs are used (huh!).
An IPv6 address is actually 128 bits in length, which is 3.4 x 1038 addresses. There is no such thing as a broadcast in IPv6 because it uses multicast traffic instead. And there are two other types of communication as well: unicast, which is the same as it is in IPv4, and a new type called anycast. Anycast communication allows the same address to be placed on more than one device so that when traffic is sent to one device addressed in this way, it is routed to the nearest host that shares the same address.
Here it is one IPv6 example address:
Global prefix | sub| Interface ID
So as you can now see, the address is truly much larger. Notice that it has eight groups of numbers instead of four and also that those groups are separated by colons instead of periods. The address is expressed in hexadecimal just like a MAC address is, so you could say this address has eight 16-bit hexadecimal colon-delimited blocks.
When you use a web browser to make an HTTP connection to an IPv6 device, you have to type the address into the browser with brackets around the literal address. A colon is already being used by the browser for specifying a port number. So basically, if you don't enclose the address in brackets, the browser will have no way to identify the information. Here's an example of how this looks:
The good news is there are a few tricks to help rescue us when writing these monster addresses. For one thing, you can actually leave out parts of the address to abbreviate it, but to get away with doing that you have to follow a couple of rules. First, you can drop any leading zeros in each of the individual blocks. After you do that, the sample address from earlier would then look like this:
Again referring to our sample address, we can remove the two blocks of zeros by replacing them with double colons, like this:
The rule you have to follow to get away with this is that you can only replace one contiguous block of zeros in an address. So if my address has four blocks of zeros and each of them were separated, I just don't get to replace them all; remember the rule is that you can only replace one contiguous block with a double colon. Check out this example:
In IPv6 we have the following address types:
- Global unicast addresses - These are your typical publicly routable addresses, and they're the same as they are in IPv4.
- Link-local addresses - These are like the private addresses in IPv4 in that they're not meant to be routed. Think of them as a handy tool that gives you the ability to throw a temporary LAN together for meetings or for creating a small LAN that's not going to be routed but still needs to share and access files and services locally.
- Unique local addresses - These addresses are also intended for non-routing purposes, but they are nearly globally unique, so it's unlikely you'll ever have one of them overlap. Unique local addresses were designed to replace site-local addresses, so they basically do almost exactly what IPv4 private addresses do-allow communication throughout a site while being routable to multiple local networks. Site-local addresses were denounced as of September 2004.
- Multicast - Again, same as in IPv4, packets addressed to a multicast address are delivered to all interfaces identified by the multicast address. Sometimes people call them one-to-many addresses. It's really easy to spot a multicast address in IPv6 because they always start with FF.
- Anycast - Like multicast addresses, an anycast address identifies multiple interfaces, but there's a big difference: the anycast packet is only delivered to one address-actually, to the first one it finds defined in terms of routing distance. And again, this address is special because you can apply a single address to more than one interface. You could call them one-to-one-ofmany addresses, but just saying "anycast" is a lot easier.
Also there are a lot of special reserved addresses. Here we have listed some of them:
- 0:0:0:0:0:0:0:0 - Equals ::. This is the equivalent of IPv4's 0.0.0.0, and is typically the source address of a host when you're using stateful configuration.
- 0:0:0:0:0:0:0:1 - Equals ::1. The equivalent of 127.0.0.1 in IPv4.
- 0:0:0:0:0:0:192.168.100.1 - This is how an IPv4 address would be written in a mixed IPv6/IPv4 network environment.
- 2000::/3 - The global unicast address range.
- FC00::/7 - The unique local unicast range.
- FE80::/10 - The link-local unicast range.
- FF00::/8 - The multicast range.
- 3FFF:FFFF::/32 - Reserved for examples and documentation.
- 2001:0DB8::/32 - Also reserved for examples and documentation.
- 2002::/16 - Used with 6to4, which is the transition system-the structure that allows IPv6 packets to be transmitted over an IPv4 network without the need to configure explicit tunnels.