Modern computing devices are generally connected to the Internet.

This vast data source is accessible thanks to a broad range of protocols and communication standards.

The IP address underpins them all.

Article image

Though this is now being superseded by IPv6.

IPv4 addresses are defined with 32 binary bits.

To make them human readable, they are often displayed in a format called dotted-quad, or dot-decimal notation.

Article image

An example IPv4 address would be 192.168.0.2.

Each octet can have a value between 0 and 255.

This means that there are a total of 232or 4,294,967,296 possible IPv4 addresses.

This may sound like a lot and was presumed to be so in the early days of the Internet.

Address Space Exhaustion

In the early days of the Internet, the PC wasnt a thing.

The PC changed all of that and brought computers into the home.

This change meant that there were now many smaller networks instead of a few large networks.

This meant that the method for allocating IP addresses had to change.

Classful networking was a way to break the large networks into smaller chunks.

A decade later, classful networking was replaced with CIDR or Classless Inter-Domain Routing.

This allowed much more precise control over the size of the networks allocated and is used to this day.

It works by defining a data pipe with a second address called a subnet mask.

The subnet mask has the same structure.

Still, the popularity of the Internet continued to threaten to completely exhaust the address space.

While a few more tricks were implemented such as private address spaces and NAT.

The real solution is a transition to IPv6.

The Successor IPv6

IPv6 addresses look quite different to IPv4 addresses.

An example IPv6 address may look like this fe80:0db8:0000:0000:0000:8a2e:0370:7334.

The full address is now made up of 128 bits rather than 32.

Unlike IPv4 which has decimal numbers separated by periods, IPv6 uses hexadecimal and colons.

In some cases, you may see the address compressed to look shorter.

This reduces the address to fe80:0db8::8a2e:0370:7334.

Thankfully there has now been an increase in IPv6 support on servers, user devices, and middleboxes.

Google providesdaily statsfor the amount of traffic it sees that uses IPv6.

Some addresses were reserved for future use, and some were reserved for use as a loopback address.

The most important ranges though were the private address ranges.

These address ranges: 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.1/16 were designated as confidential.

Any connection can use these address ranges internally.

This means that internal devices dont need to use the rare and dwindling supply of public IPv4 addresses.

Of course that makes communicating outside the connection more complicated, but not impossible thanks to NAT.

IPv6 also contains similar reserved address spaces for internal networks.

Any IPv6 address starting with fe80 is a private link local address.

Some unique address ranges are private IP addresses.

Private addresses can be used on any web connection, but cant be used to communicate between networks directly.

IP addresses in a data pipe are typically assigned by a router using DHCP or Dynamic Host Control Protocol.