Internet Protocol is the principal communications protocol in the Internet protocol suite for transferring data across networks. Routing function enables inter-networking, and essentially establishes the Internet.
Internet protocol version 4 in short IPv4 is most predominant protocol in the internet.
IPv6 is an evolution of IPv4 and latest version of internet protocol.
As with all internet protocols, IPv6 was defined in series of RFCs starting with RFC 1883 by the year 1996. This RFC is now obsoleted by RFC 2460. The reason to skip number 5 was, Internet Protocol Version 5 was allocated for the experimental Internet Stream Protocol. IPv6 is an evolution of IPv4. IPv6 is supported by most of the latest operating systems by default.
IPv6 over IPv4
Extended address space
IPv6 addresses are now 128 bits long allowing 2^128, or approximately 3.4×10^38 addresses which is enough for the foreseeable future. This is one of primary reasons for moving towards IPv6 as we are running out of IPv4 addresses. The IPv4 address space has a theoretical limit of 4.3 billion addresses (2^32). In the future we will need more IP addresses as device manufacturers in all industries are developing systems based on IP.
IPv6 supports Stateless auto configuration mechanism. Hosts can auto configure for one or more valid global IP addresses by using either its MAC identifier or a private random number to build a unique IP address. Furthermore, if we imagine the number of devices we may have in our homes in the future that will need an IP address, this feature becomes indispensable. For the curious readers IPv6 addresses can be either statically assigned or they can be assigned through SLAAC or through DHCP. We shall see in the next series of blogs on how this is done in IPv6 as this is a very important feature of IPv6.
Simplification of header format
IPv6 header is much simpler than the IPv4 header and has a fixed length of 40 bytes. This allows for faster processing. It basically accommodates 16 bytes for the Source and Destination address (combined 32 bytes) and only 8 bytes for general header information. I always used to think why so many fields in IPv4 header are not at all used in many cases yet it is always present there. But in IPv6 those fields are all removed and the header fields are simplified as you can see below. The IPv4 header size can vary from 20 bytes to 60 bytes depending upon the options selected.
And also, IPv6 carries options in extension headers, which are inserted only if they’re needed. This allows for faster processing of packets. Few extension headers are already defined like Authentication Header (AH), Encapsulating Security Payload (ESP) etc and many more can be added in future. Extension headers are of 8 bytes in size (some need padding to meet this requirement). These headers have their own format and it varies from one to one.
One more important difference is that routers do not fragment IPv6 packets at all. Pls look into the above image as there is no fragment offset field in IPv6 header. This saves a lot of processing in the routers for fragmenting and re assembling of the packets. It is the responsibility of the source to identify the Path MTU and send fragmented packets based on this. The smallest MTU size in IPv6 is 1280 octets.