progressive pride flag

Back to blog home

A short history of the Internet

When the internet was made, there was a simple idea in mind, sharing information between people and devices in a network. ARPANET pioneered this, creating many of the technologies we use today, or their predecessors. While many of the technologies coming out of ARPANET were built off and evolved in their life towards the modern age, IPv4, the same technology deployed on ARPANET and similar networks in the early 1970s, is not only still in use, but the primary method of identifying hosts in a network, and has not changed in design since 1981. While many other technologies also created around the same time, such as TCP, are still widespread, they do not have the same immediate problems as IPv4, and have been updated since their creation to work well in the modern web. In 1995, IPv6, the replacement for IPv4 which aimed to fix many of the problems with IPv4, was standardised. This protocol, despite having been around for over 30 years, is still not the primary internet protocol on many devices, in fact many ISPs do not support it.

Why IPv6?

IPv4 was designed for a world where the internet was exclusive to universities, governments, and businesses, all of which had fairly low amounts of devices. At the time, the 4 billion (2^32) addresses which IPv4 was designed around was seemingly enough, however as the internet grew, the impending exhaustion of IPv4 addresses soon became a reality that had to be dealt with. IPv6 intended to fix this by increasing the number of addresses up to 2^128, or around 380 undecillion addresses, however it had one major flaw which made internet providers globally hesitant to switch. In order to facilitate this number of addresses, IPv6 was incompatible with IPv4, and had no backwards compatibility. This flaw has pushed many internet providers not towards deprecating IPv4, but towards creating complex systems in an attempt to extend IPv4 well past its limits.

NAT, CG-NAT, and a false sense of security

One of the most widely deployed measures to extend IPv4's address space is NAT. Network Address Translation is a method of taking one set of addresses and translating them into another. In many deployments of IPv4, this is used to take one publicly addressable IP address and translate it into many internal IP addresses. The original RFC in which NAT is defined described it as a "short-term solution" to the problems of IPv4, intended to be replaced by a new solution (IPv6) as soon as possible. Despite this, NAT is deployed in almost every household and IPv4 network across the world. Due to how long NAT has been around for, many network engineers see NAT as a security measure as well as a measure to extend IPv4 space. This is due to NAT masking the devices within a network, so the only exposed device is the router. However, this idea of NAT as security has significantly harmed the deployment of IPv6, as network engineers see IPv6's lack of NAT as a security risk. Even with standard NAT, IPv4 exhaustion was still a huge issue, so a new layer of NAT, CG-NAT, was created. This allowed ISPs to share 1 public IPv4 address between many customers, significantly reducing the amount of IP addresses they needed to deploy. However, this came with the drawback of not allowing customers to port forward services outside of their own network. These measures, built out of a short term solution, created a massive problem far bigger than IPv4's exhaustion. It promoted the death of the open, free, and decentralised internet.

Self-hosting, the old web, and the web NAT has created

When the internet was in its infancy, it was common for individuals using the internet not only to consume, but to create. This was what made the internet so powerful, anyone could create and share anything. However, when NAT was being deployed, it suddenly became far more difficult for an individual to create and publish their own works without the use of an external service. For one, there was a limit to how much you could deploy on one network. Many services expect a certain port to be used, however only one device in a given network could publish on that port. On top of this, the public IP address of a user's network would periodically change, leading to a need to constantly update the IP address you give to people who want to use or see what you have created. Services exist to work around this, however, this led to a massive blow towards the free and open internet, as it became significantly more complex and expensive to create something and share it over the internet. Additionally, due to the decrease in self-hosting, ISPs started offering non-symmetrical internet connections with significantly lower upload speeds. This eventually became the norm around consumer internet connections, essentially killing off self-hosting without the use of external providers. In place of self-hosting, large, centralised platforms took over, having the issue of giving users little to no control over what they want to publish. They are ultimately at the mercy of the platforms, must follow the rules and restrictions of the platforms, and must give them money for the privilege of publishing on the previously free internet.

How IPv6 fixes things

While IPv6 cannot undo all of the damage that IPv4 has created, it can solve many of the problems which block individuals from self-hosting and freeing themselves from platform providers. With IPv6, every device gets their own IP address, making it easy to self-host many creations out of your own network. Additionally, due to the lack of scarcity of IPv6, it is trivial and significantly cheaper to rent your own IPv6 space which you can freely use and announce. While IPv6 does not fix the issue of dynamic public IPs (and arguably makes it worse), it comes with proper technologies to make dynamic IPs easy to work with on the internet. IPv6 is also significantly easier to manage, replacing the stateful DHCP for stateless and automatic SLAAC in simple networks, allowing faster and easier configuration of IP addresses.

What can you do to bring the internet back to its open age?

For people hosting websites and services, support IPv6. Supporting IPv6 has now become incredibly easy, with most tools supporting it out of the box. It is often just a matter of adding an AAAA record to your domain(s). For individuals, make sure to enable IPv6 in your router. If your ISP doesn't support IPv6, question them and switch, and bring your friends along. Realistically, if your ISP refuses to support IPv6, they're probably causing you a lot more issues too. For developers, stop hard-coding IPv4 into your programs. While this is not a major issue anymore, many older and smaller applications still assume that the device being used at least has an IPv4 address, which may no longer be the case. There are many tools and guides to teach you about the differences between IPv4 and IPv6. Of these, book6 is a great resource which goes over everything you need to know about IPv6.