This is a collected IPv6 tutorial form IPv6 posts we have written and should be a good starting point for anyone who is just learning about IPv6.
IPv6 was first formally described in Internet standard document RFC 2460. IPv6 offers more addresses, and implements features not present in IPv4. It simplifies aspects of address assignment (stateless address autoconfiguration), network renumbering, and router announcements when changing network connectivity providers. It simplifies processing of packets in routers by placing the responsibility for packet fragmentation into the end points.
IPv6 is also called IPng or IP next generation; it builds on the best characteristics of IPv4 instead of building something from scratch; in other words, we are sticking with what we know works and make some required improvements instead of building the whole thing over.
IPv4 addresses are represented in the known dotted decimal format by converting every 8bits block to its decimal equivalent and separating them by dots. Using the same dotted decimal representation for IPv6 is not very practical specially for humans. To make the IPv6 address representation shorter it was decided to use a hexadecimal representation. I will have to admit that it enhances the situation a little bit, however IPv6 representation is still ugly at least in my point of view.
Global IPv6 unicast addresses are equivalent to the public IPv4 addresses, this means they are routable and reachable over the internet. Global unicast addresses are identified by the binary prefix of 001. The global unicast addressing was designed to fit the hierarchical scheme of the internet. The following format is common for that reason.