Guide to improving your computer networking skills
Publish Date: 20 March 2024
As a devops engineer, one of the most important skills you can work on is computer networking.
As a professional devops engineer, a lot of issues that you might encounter can easily be resolved if you have a firm grasp on networking fundamentals.
In this article, I give a list of topics that if mastered will make you a better devops engineer and a really good computer engineer.
Having a good grasp over the fundamentals will allow you to master complex concepts in networking that underlie docker, kubernetes and the cloud.
I was able to clear the AWS Computer Network Speciality exam by preparing just for a week because I had a strong grasp over the fundamentals.
So let’s get started.
- TCP/IP stack - The first thing that you need to focus on is understanding the TCP/IP stack. You need to understand the significance of different concepts like TCP, UDP, IP, layer 3 and layer 4. Understand the difference between switching and routing.
- IP Address and Ports - Next, try to understand how ip addresses and ports work. It’s very important to understand how a network request finds its way from one computer to another. Understand what are subnets, CIDRs and subnet masks. One of the most important concepts that needs to be understood here is how to split a network into subnetworks optimally.
- Protocols - Next understand what are the different protocols available that we use in our day to day networking activities. Understand at least these protocols - HTTP, HTTPS, DNS and SSH and SMTP.
- Tools - Learn about linux tools like ping, dig, telnet, tcpdump, traceroute, telnet and netstat. These are some important tools that will help you in debugging networking activities. A lot of networking issues can and are solved with these tools.
- NAT - Understand what NAT (Network Address Translation) means ? It is one of the most common concepts in action out there on the internet.
- Port Forwarding - Next, understand what port forwarding is and when it is useful. Port forwarding allows you to debug complex scenarios by letting you access networks from your local machine which you might not have had access to otherwise.
- Proxies - Understand how proxies work. Proxies are used to front traffic in many cases and are used so that application network management does not need to happen at the code level. For example, a proxy allows you to load balance traffic to multiple instances of an application, apply SSL certificates, apply rate limiting and much more. Set Up an nginx server and go through setting up a reverse proxy and an ssl certificate.
- DNS Records - Understand what are the DNS records and how to set them up. Understand what are the different types of records (A, AAAA, TXT, MX, CNAME). Understand what are hosted zones and how subdomains work.
- Home Network - Understand how your home network works. Understand the difference between a private network and a public network. Understand how a packet traverses from your machine to google.com’s server and back. What exactly your router is doing in between. Understanding this will make you a better cloud engineer. Open the network tab in your browser and make a request to google.com. Understand the different headers that are sent in the network request. Understand what exactly does your browser do between you typing
google.com
and you seeing the google homepage. Understand the different status code in the 2xx, 3xx, 4xx and 5xx ranges.
- Firewall - Move on to understanding how firewalls work in linux. Play around with setting up firewall using UFW if you have a ubuntu machine
- IP Tables - Next, understand what iptables do. Understanding and remembering a lot of what iptables does is a bit hard. So I would suggest starting with the basics and gradually build your strength over time. Iptables are heavily used in Kubernetes and though not really required for working with Kubernetes, will give you insights into what really happens under the hood.
- SSL/Encryption - Understand how to set up SSL certificates using letsencrypt. Letsencrypt provides free SSL certificates and since SSL is very important on the internet today from a security perspective, it makes sense to invest time in understanding how to set it up for free.
Once this is done, you shall be ready to understand advanced networking concepts in Docker, Kubernetes and the cloud. Setting up networking on the cloud should become very easy. 50-60% of networking work in the cloud infrastructure involves setting up security groups, VPCs and load balancers.
You should be able to clear most networking job interviews with the above knowledge.
Hope this helps.
Recommended Books -
If you want to read a book, then the book that I would recommend is Computer Networks by Andrew Tannenbaum. This book covers a lot more than the above. It goes into detail in how concepts like LAN networking and Wifi work. This much information is not required for a devops engineer. However it is a good read to get a firm grasp over the fundamentals. It is a quite long book.
Your man,
Sagar Gulabani