Learning outcomes for the article:
- Be able to identify the motivation for the invention of the internet.
- Be able to understand the architectural design of the internet and the functionality that it supports.
We all know the internet as a place where we go to post on social media, read the news, watch funny videos, and do so much more every day, but what is it and why was it designed like it is designed??
Before we can understand the design of the internet, we need to better understand the reason it was built. Let us rewind time back to the Cold War Era in the 1960s. In this era, the United States was deeply fearful that the Soviet Union would launch a surprise nuclear attack. If all communications were centralized and the main communication center was included in the attack, the US would not be able to communicate that they had been attacked (and therefore send a counterattack)!
This is why the US wanted to design a communication network that was:
- Decentralized network: where communication among different computers on the network (i.e. computers) only depends on local connectivity of computers (whereas centralized implies dependency on some central communication center). This way, there would be no good way to destroy communication among different people.
- Scalable: meaning that tons of computers can easily be added into the network.
It was this problem that researchers were trying to solve that culminated in the invention of the internet, i.e. a physical infrastructure (i.e. wired connections, signals, etc.) that is put in place so that computers on the infrastructure can communicate in a decentralized manner!
Before revealing the final design infrastructure for the internet, let us step through some other possible design infrastructures and examine why they would not work. Let’s first imagine that we are trying to connect two computers so that they can communicate between each other. This is easy enough. We can imagine bridging the computers together with a physical connection as shown in the figure below.
Now, let’s imagine we have N computers, and we want them to all have the ability to send messages from any of the N computers to any of the N other computers. You can see that the number of connections among all the computers grows exponentially with the number of computers. We can see that this solution is not scalable.
Now, let us suppose that each of the N computers has an IP address. Also, let us suppose that we have a specialized machine called a router that can take a message from any computer and a given IP address, and send that message to the computer with the respective IP address. This solution is more scalable since it is linear in the number of computers, but it is centralized— meaning if someone destroyed the router, all communication would cease to exist.
So then, what if instead of having only router-computer connections, we added the ability for routers to route messages to other routers? This would not only allow for easy scaling, but it would allow the network to be decentralized so if one part ceased to function, there would still be computers that would be able to communicate with one another. Furthermore, the solution is still scalable since adding computers does not require exponentially more connections in the network.
This was a great solution, but researchers added one more layer of sophistication to this network by making the network structure hierarchical, meaning that the routers were connected in this hierarchical way shown below. This hierarchy enabled efficiency and scalability that was unprecedented!
You can see in this organization that some computers may not be directly connected with one another, but by sending their messages upward in the hierarchy, the routers will always eventually be able to reach a computer on the network (in an efficient manner). You can learn more about this here.
Although this figure does not do justice in illustrating the sheer magnitude and complexity of the internet network, it gives you a sense of how a small piece of it is organized. It is important to note that the internet is a physical infrastructure (composed of routers, physical cables, wireless signals, etc.) that enables the passing of messages from different computers. The diagram above simply shows how this infrastructure is organized.
The details about all the particular physical components and their respective names (i.e. routers, ISP networks, MAP points) that make up the internet infrastructure are included in [insert link to this future article].
Now, the elegance of the internet is not in the system architecture itself. Just having the physical infrastructure shown above is not enough to have the internet. In order for computers to be able to pass messages to one another through this physical network, each computer must obey some protocol, or set of rules, on how they encode and decode the messages that they want to send. There are actually layers of protocols to follow (the application, TCP, IP, and hardware protocol) that all computers use to send and receive messages across the internet (as shown in the figure below).
One of the most important rules or data sent across the internet, are that messages are sent in what are called ‘packets’. Instead of sending entire messages across the internet, they are broken down into these packets which each have some standard specified size. By limiting the amount of information that can be sent across the internet, the designers of the internet were guaranteeing efficiency (since small amounts of data can be sent extremely quickly) and uniformity (since all packets have to be the same size).
Thus, when a message is encoded, the following steps happen:
- The routers that comprise the internet cannot just handle a message without any encoded information in it. They need to know which application (i.e. in hardware, this corresponds to which port) on the receiving computer will need to read in the data.
This port information is encoded into the message via the Application protocol.
- The routers that comprise the internet also need to know how to decompose the packets into smaller packets (i.e. what size these packets take on). The receiving computer also needs information on which order the packets that come in need to be reassembled so the original message can be reproduced.
This information is encoded in the TCP protocol.
- The routers also need to know the IP address of the receiving computer.
This information is encoded in the IP protocol.
- Finally, the message needs to be transformed from the message you see on the screen into data (bytes of information) that can be passed along the physical hardware infrastructure of the internet.
The protocol that specifies how this is done is the hardware protocol.
Note, the above steps are just a drop on the surface of what the protocols of the internet specify. Additional details about each of the protocol layers can be found in [insert link to future article]. Nevertheless, it is these protocols define the process that computers use to encode and decode messages that are passed along the internet, thereby ensuring standardization and uniformity.
In summary, the internet is a physical infrastructure that enables the sending of messages among computers in a completely decentralized and efficient way! It is the combination of the physical infrastructure (organized in the hierarchical way described above) and all the rules specified by the internet protocol stack, that allow us to send messages to any other computer connected to the internet.
The physical infrastructure of the internet is composed of:
- Internet Service Providers who own networks of routers
- where the routers are organized in a hierarchical structure
Each computer that wants to connect to the internet must:
- have an IP address.
- send (encode) and receive (decode) messages according to some protocols.
This ultimately allows for a communication network that is incredibly scalable, efficient, and decentralized.