Join us on Facebook!
— Written by Triangles on January 24, 2021 • updated on May 06, 2021 • ID 87 —
A bird's-eye view on the art of resource sharing from one computer to another.
Understanding the Internet — “Is that thing still around?” — Homer Simpson
Introduction to the TCP/IP protocol — The official rules that allow computers to communicate over the Internet.
Introduction to IP: the Internet Protocol — From routing to IP addressing, a look at the protocol that gives life to the Internet.
Introduction to TCP: Transmission Control Protocol — One of the most important, high-level protocols in the Internet Protocol Suite.
Network programming for beginners: introduction to sockets — A theoretical look at one of the most popular programming tools for exchanging data over computer networks.
Making HTTP requests with sockets in Python — A practical introduction to network programming, from socket configuration to network buffers and HTTP connection modes.
Welcome to the first episode of the Networking 101 series. In this introductory chapter I want to take a peek at the huge world of computer networks and try to grasp the fundamental concepts behind them. Computer networks are one of the hottest technologies of the 21st century and really have changed the way we humans share knowledge. Let's start off by answering to the most obvious question.
A computer network is a bunch of devices connected together to exchange information — emails, documents, audio/video data — or to share a resource — printers, storages and other physical devices. Typically, computers in a network are called hosts, while links are the elements that connect them. The picture below displays a very primitive form of network where two hosts are linked together through a physical cable.
The network seen above works, at least theoretically: the computer on the left is able to send data to the one on the right through the connecting cable and vice versa. Things are obviously way more complex in the real world, where multiple devices are linked across the globe, often without physical cables, data can be sent anywhere and the transmission is orchestrated by various hardware and software components. How is it possible to achieve all that magic on a global scale? Also, how exactly the transmission takes place? What kind of technology allows to get a text document, squeeze it through a cable and deliver it on someone else's computer? This series will try to find the right answers to those questions.
The first step in our research is to acknowledge that computer networks are complex creatures that can be studied in multiple ways: from how to lay down network cables in the ocean to complex mathematical models that explain the data flow. Let's dig deeper.
Computer networks can be analyzed both at a hardware and software level. Physically, a network is made of computers, cables and other machinery that makes it work correctly. Studying the network hardware involves a lot of physics, mathematics and electronics to describe how the signal travels around, along with the technology behind components and computers. On the software side you will find programs, instructions and algorithms that give life to the physical counterpart.
In this series I will mostly focus on the latter category, providing some hardware background when needed. We will also touch a bit of network programming: the art of writing programs that communicate with each other over a computer network. Nevertheless, the physical side of networks remains a fascinating topic that will deserve more love in the future.
Computer networks can be classified according to their shape, also known as topology. The picture below shows a sample of possible shapes that you can find out there:
Our first example in picture 1. can be seen as a very simple line network. On the other hand my computer, my phone and my tablet currently are all part of a star network, located in my apartment. They are all connected to a central node — also known as the hub — and can't talk to each other directly. We will dig into this type of home networks in future chapters.
Each network shape has pros and cons: choosing the right one really depends on what requirements the network has to meet. Also, topology can be physical — the actual placement of network components or logical — how the data flows inside a network. Analyzing networks by shape may also involve a lot of graph theory, a branch of mathematics concerned with objects connected together.
A network can be public or private. Public networks can be accessed freely: for example the web page you are currently reading belongs to a public network and is available to anyone with a working connection, a computer and a web browser. Conversely, a private network has its access restricted, isolated from other public networks. Private networks are usually found in schools or companies, where sensitive information must be protected from unauthorized access.
Private networks can also be built on top of public ones with technologies such as Virtual Private Network (VPN), used to connect two private networks together through an existing public network. VPNs provide privacy and anonymity and will be examined in detail in one of the future chapters of this series.
Privacy and anonymity are part of a bigger issue called network security: any activity designed to protect the usability and the integrity of network and data. This is yet another huge and extremely fascinating topic that touches multiple fields and technologies from cyberattacks to automotive security and cyberwarfare.
Computer networks range from very small to very large. Few hosts connected together over a limited area form the so-called Local Area Network (LAN). This is the typical network size you find inside houses, schools or offices. A larger network that extends across a city is called Metropolitan Area Network (MAN) and can be conceptually seen as many smaller LANs connected together. Finally a Wide Area Network (WAN) is even bigger than that, which connects multiple MANs or LANs together and can span the whole globe. Engineers are also working on a type of interplanetary computer network that connects satellites, planetary rovers and the Earth.
Different network sizes often require different technologies. For example a LAN is designed to serve few computers connected together and can't scale up to a MAN or a WAN so easily: another kind of infrastructure is required. As networks grow bigger they may also raise political concerns, especially when multiple countries are involved. The net neutrality is the principle that people should be free to control what they see and do in a public global network, without filters or censorship applied by the local network providers.
All networks are based on one or more network protocols, a set of rules that determine how information should be transmitted between different computers in the same network. A protocol instructs engineers how to build a working network both from a hardware and software point of view. The list of existing network protocols is quite huge and spans across multiple domains.
For example, the HyperText Transfer Protocol (HTTP) is probably one of the most popular: it describes how to fetch and share resources, for example text documents, over a network. It also describes all the hardware components required for the resource exchange to work correctly. Thanks to the HTTP you can browse this page on your device, add comments in the box below or share it on social media.
Another example, way closer to the hardware: the Address Resolution Protocol (ARP). This protocol determines how physical hosts are identified inside a network and plays a critical role in the modern connectivity. In this series I will focus on the most important protocols, the ones that rule networks currently existing on this planet. HTTP and ARP included, of course!
All the complexity and diversity seen above has a downside: not all networks can talk to each other nicely. A LAN for example is driven by protocols designed to support few computers connected together and that makes it incompatible with a MAN or a WAN. Wouldn't it be great to be able to send a message from one corner of the Earth to another, regardless of the network type and the protocol it uses? This problem is solved by internetworks, or internets in short. An internetwork is just another type of network that connects multiple networks together and abstracts away their differences, so that they can communicate as if they were compatible in the first place.
Currently there is only one type of internetwork on our planet, called the Internet (with the capital I). The Internet is a vast network of networks (a WAN) made of private, public, business and government networks all around the globe. Thanks to the Internet anyone can can share information with other people — and other computers too — connected to the Internet without barriers.
The internet, like any other network, needs a protocol in order to operate correctly: this is known as the Internet Protocol Suite and is actually a collection of multiple communication protocols bundled together that describe how data should be sent around the globe. The Internet Protocol Suite is also called TCP/IP because of the two most important sub-protocols it contains: the Transmission Control Protocol (TCP) and the Internet Protocol (IP). I will dig into those two in the upcoming episodes. Stay tuned!
Computer Networks — A. Tanenbaum, D. Wetherall
Wikipedia — Computer network
Wikipedia — Node (networking)
Wikipedia — Host (network)
Wikipedia — Local area network
Wikipedia — Wide area network
Wikipedia — Internetworking
Wikipedia — Internet
Wikipedia — Communication protocol
Wikipedia — Internet protocol suite
Cisco — What Is Network Security?
Computer Networking Complete Course - Beginner to Advanced