Introduction
Get an introduction to the networking concepts for distributed systems.
We'll cover the following
The previous lesson taught us about the end nodes of a distributed system, which treats the network that connects them as a black box.
This chapter will examine the various components of this network, which facilitates communication between the nodes that form a distributed system.
Applications typically rely on a set of well-specified protocols which allow these applications to perform their functions at a high-level of proficiency, without the need to deal with low-level details. This means that people can build applications in many cases without the knowledge of how these lower levels functions work.
However, this knowledge does enable us to create scalable, efficient, and fault-tolerant distributed systems and also troubleshoot issues more efficiently, as they arise.
This chapter contains a brief overview of the basic technologies and protocols used to interconnect multiple computing nodes.
Rewinding fallacies that are relevant to networking
If we revisit the fallacies of distributed computing, we will notice that many of them are relevant to this chapter:
- The network is reliable.
- The latency is zero.
- The bandwidth is infinite.
- The topology doesn’t change.
- The transport cost is zero.
- The network is homogeneous.
We encourage the reader to keep these fallacies in mind, as they go through the lessons of this chapter.
Networking protocols
There are many different networking protocols and technologies in use nowadays that to cover them all in a single course would be nothing short of a herculean task. As a result, this course will only focus on covering the Internet protocol suite, which is the most pre-dominantly used protocol these days.
However, the problems solved by these protocols are general and they rely on fundamental principles that manifest in other models as well, such as the OSI model.
Internet protocol suite
The Internet protocol suite follows a layered architecture, where the overall functionality is divided into separate layers that contain a set of distinct protocols. Each layer provides a service to the next layer above and makes use of the services provided by the layer below.
Starting from the top, there are five layers, namely:
- The application layer
- The transport layer
- The network layer
- The link layer
- The physical layer
When data is received from the layer above, each layer wraps this data along with the necessary metadata for the corresponding protocol, as is shown in the illustration below. This metadata is typically referred to as headers, while the actual data is referred to as a payload.
When data is passed from lower-level layers to higher-level layers, the reverse process is followed. In this case, the payload is extracted and handed off to the layer above. These processes are also known as encapsulation and decapsulation accordingly.
Note: This chapter will examine each of those layers and their protocols to understand the problems that each layer attempts to tackle and how they are solved. We will follow a bottom-up approach starting from the layers at the bottom of the stack and moving up one step at a time.
Get hands-on with 1400+ tech skills courses.