Before jumping into the differences between IPv4 and IPv6 addresses, let’s first consider what an IP address is.
An IP address (either IPv4 or IPv6) uniquely identifies a host or device on a network, and can be a source or destination address.
Your computer, mobile phone, router, Roku box, Layer 3 switch, Firewall, Xbox, surveillance camera, baby monitor, etc., all have IP addresses.
When you access a web site on the Internet or other resources on the corporate Intranet, you’re actually visiting an IP address lurking behind a domain name like apple.com or cisco.com.
One Caveat for Network Newbies: Subnet addresses, multicast addresses, broadcast addresses and Link Local addresses look like IP addresses but they cannot be applied to hosts/end devices/servers/router interfaces, etc. The explanation for that is beyond the scope of this post.
With that brief intro to an IP address, let’s take a look at the differences between an IPv4 address and an IPv6 address:
Difference 1: Available or Exhausted?
IPv4 addresses are almost exhausted today.
Network Address Translation, Private IP Addresses and Classless Inter-Domain Routing (CIDR) pushed the day of reckoning for IPv4 but that day seems to have arrived now.
Today, when you sign up for a web hosting account or a new mobile phone service, you’re more than likely to be alloted an IPv6 address.
There’s plentiful supply of IPv6 addresses. Almost as many as grains of sand on this planet, according to some network gurus.
IPv4 represents the past and a fading present while IPv6 represents growth and the future.
But for the forseeable future, IPv4 and IPv6 addresses will continue to co-exist.
Difference 2: Number of Bits in IP Address
An IPv4 address is 32-bits long, divided into four octets of 8-bits each.
On the other hand, IPv6 address is 128-bit long and divided into eight hextets of 16-bits each.
Difference 3: Number of Possible Addresses
IPv4 offers about 4.3 Billion Addresses.
While you may be tempted to think 4.3 billion IPv4 addresses is a lot, it really is not.
Some Class A addresses (10.0.0.0/8) are not publicly routable on the Internet as are some parts of Class B and Class C.
Despite efforts like CIDR (Classless Inter-Domain Routing), Private IPv4 addresses and NAT (Network Address Translation), we have almost run out of IPv4 addresses.
Widespread use of the Internet in all geographies, explosion in cell phone and other mobile devices and growth of IoT (Internet of Things) devices like surveillance cameras, connected exercise machines, etc., have accelerated depleion of IPv4 addresses and spurred the transition to IPv6 addresses.
What about total number of IPv6 addresses?
Hold on to your seat tight now because the answer is stupifying: 340 Undecillion.
So what in the heck does 340 Undecillion mean?
Difference 4: Dotted Decimal vs Hexadecimal
The next key difference between an IPv4 and IPv6 address is in the way the address is represented.
An IPv4 address is usually represented in dotted decimal format.
Here are some examples of IPv4 addresses in Dotted Decimal format:
220.127.116.11 (Google’s DNS server IPv4 address)
10.2.3.1 (a private IPv4 address).
But an IPv6 address is represented in hexadecimal format.
An IPv6 address consists of 32 hexadecimal digits, with each hex digit representing 4-bits.
Each set of 4 hex digits is separated by a colon.
Example of a publicly routable IPv6 address in Hexadecimal format:
Difference 5: Numbers or Alphabets
An IPv4 address includes only numbers.
However, an IPv6 address can include both numbers and alphabets (but only from A-F).
Difference 6: Abbrevation & Expansion
Not surprisingly, an IPv6 address can be summarized or expanded depending on the address.
Leading 0s in an address can be manipulated but not trailing 0s. Also, two or more continuous hextets of 0s can be written as :: but done so only once.
Example 1: Leading 0s can be Supressed:
can be written as
Example 2: Trailing 0s MUST Not be Touched
The two 0s after 62 in the second hextet cannot be removed.
But an IPv4 address does not lend itself to abbreviation or expansion.
Difference 7: Size of Header
IPv4 header size is 20-bytes long while the header size in IPv6 is 40-bytes.
Although the header size is larger in IPv6, it is considered to be simpler compared to the IPv4 header.
Difference 8: What about Classes?
IPv4 addresses are broadly divided into five Classes (A-E).
For instance, Class D addresses are Multicast addresses.
Although the importance of Classes has diminished because of innovations like Classless Inter-Domain Routing (CIDR), classes are still an inalienable element of IPv4.
There are no classes in IPv6 addresses.
Difference 9: Different Routing Tables
There are separate routing tables for IPv4 and IPv6 addresses.
An IPv4 packet is routed to its destination via the IPv4 routing table.
Similarly, an IPv6 packet is routed by referencing the IPv6 routing table.
For instance, when you issue the show ip route command, you’ll see only the IPv4 routing table.
To see the IPv6 routing table, you’ll have to issue the command: show ipv6 route.
During migration from IPv4 to IPv6, organizations go in for “dual stack” or the concept of a router being able to route both IPv4 and IPv6 packets.
Difference 10: Issue of Fragmentation
Fragmentation of packets is permitted in IPv4.
Fragmentation refers to breaking up packets into smaller chunks when they exceed the Maximum Transmission Unit.
But fragmentation is not permitted with IPv6.
When packets exceed the MTU at IPv6 supporting routers they will be dropped.
Difference 11: ARP vs NDP
Address Resolution Protocol (ARP), which maps IPv4 Addresses to MAC addresses, is supported only in IPv4.
IPv6 addresses rely on Neighbor Discovery Protocol (NDP).
Difference 12: More Configuration Options
IPv6 offers more configuration options compared to IPv4.
With IPv4, it’s either manual (static) configuration or relying on Dynamic Host Configuration Protocol (DHCP). There are exceptions like Automatic Private (APIPA) for Windows systems.
When it comes to IPv6, there are two static configuration methods (manual and eui-64) and two dynamic configuration (dhcp and autoconfig) methods.
Difference 13: Loopback Address is Different
While troubleshooting network issues, Network engineers or students preparing for CCNA or CCNP exams use the Loopback address to test if the network protocol stack is working fine.
Unsurprisingly, the loopback address we use for testing is different in IPv4 and IPv6.
In IPv4, the loopback address is usually 127.0.0.1 while it’s ::1 in IPv6.
jack@mypc:~$ $ ping ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.057 ms
64 bytes from ::1: icmp_seq=5 ttl=64 time=0.068 ms
— ::1 ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4079ms
rtt min/avg/max/mdev = 0.040/0.051/0.068/0.010 ms
jack@mypc:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.032 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.074 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.074 ms
— 127.0.0.1 ping statistics —
7 packets transmitted, 7 received, 0% packet loss, time 6128ms
rtt min/avg/max/mdev = 0.032/0.053/0.074/0.015 ms