Fundamentals of Networking for Effective Backend Design

Understanding the first principles of networking to build low latency and high throughput backends
Fundamentals of Networking for Effective Backend Design
File Size :
8.92 GB
Total length :
12h 45m



Hussein Nasser


Last update

Last updated 11/2022



Fundamentals of Networking for Effective Backend Design

What you’ll learn

IP Protocol
TCP Protocol
UDP Protocol
Understand the circumstances where requests and responses are slowed down
Learn how DNS works
Learn how TLS works
Learn the building blocks of TCP/IP Protocol
Learn the OSI Model and where your application fits in it
Understand the performance impact of TCP/IP in Backend applications
Make better decisions on what protocol to select for the Backend
Build and Design better TCP/UDP Backends
Use Wireshark to inspect traffic
Use TCPDUMP to inspect traffic
Build TCP and UDP Servers with multiple languages (Javascript and C)
Networking with Docker

Fundamentals of Networking for Effective Backend Design


Basic programming experience
Recommended: Having built a backend application


We are entering an era in software engineering where we rely on libraries and frameworks to do most of our work. While this is useful and save tremendous dev hours, it creates leaky abstractions that manifest in form of performance degradation, unexpected errors, 100% CPU , network and disk usage, hangs, latency and many other. It becomes difficult to articulate what goes wrong on the backend and how to fix it when engineers don’t understand the basic building block of what they are interacting with. Network communication is one of the most critical pieces in backend engineering. And the TCP/IP Internet suite is the basic fundemntal building block of communications that link the frontend to the backend. Any protocol we use eventually gets encapsulated into either a TCP segment or UDP datagram. That packet is wrapped in an IP packet which is placed into a frame and then sent across the network. These layers are important to understand for backend engineers in order to optimize the stack, minimize latency, and increase throughput. What matters  is the true understanding of these pieces and not just memorizing definitions and packet headers to pass an exam. If an engineer truly understood what is happening when their backend API receives an HTTP POST request for example, they will be astonished at how much is happening behind the scenes. They would completely change the way they approach backend API designs, they will try to select the best protocol for the job, and they will tune that protocol to its maximum potential. They will start asking questions about frameworks and libraries that nobody else does. It is those questions that will make them fully utilize those framework to their maximum potential. This course is primarily designed for backend engineers who built applications, services or APIs and want to take their skillset to the next level. If you are a frontend engineer who are interested in the backend and have attempted to build backend apps before this course is also for you. If you are a network engineer who already know the basic fundamentals and want to start building backend applications effectively this course might help you bridge the gapThis course is not designed for those who want to pass network certification tests (CCNA, CCNP, CCIE etc..)


Section 1: Introduction

Lecture 1 Welcome

Lecture 2 Who is this course for?

Lecture 3 Course Outline

Lecture 4 Download Course Slides and resources here

Section 2: Fundamentals of Networking

Lecture 5 Client – Server Architecture

Lecture 6 OSI Model

Lecture 7 Host to Host communication

Section 3: Internet Protocol (IP)

Lecture 8 The IP Building Blocks

Lecture 9 ICMP, PING, TraceRoute

Lecture 10 IP Packet

Lecture 11 ARP

Lecture 12 Capturing IP, ARP and ICMP Packets with TCPDUMP

Lecture 13 Routing Example

Lecture 14 Private IP addresses (Alaska Airlines WIFI example)

Section 4: User Datagram Protocol (UDP)

Lecture 15 What Is UDP?

Lecture 16 User Datagram Structure

Lecture 17 UDP Pros & Cons

Lecture 18 UDP Server with Javascript using NodeJS

Lecture 19 UDP Server with C

Lecture 20 Capturing UDP traffic with TCPDUMP

Section 5: Transmission Control Protocol (TCP)

Lecture 21 What is TCP?

Lecture 22 TCP Segment

Lecture 23 Flow Control

Lecture 24 Congestion Control

Lecture 25 Slow Start vs Congestion Avoidance

Lecture 26 NAT

Lecture 27 TCP Connection States

Lecture 28 TCP Pros and Cons

Lecture 29 TCP Server with Javascript using NodeJS

Lecture 30 TCP Server with C

Lecture 31 Capturing TCP Segments with TCPDUMP

Section 6: Overview of Popular Networking Protocols

Lecture 32 Networking Protocols Introduction

Lecture 33 DNS

Lecture 34 TLS

Section 7: Networking Concepts that Affect Backend Performance

Lecture 35 What is this section?

Lecture 36 MSS vs MTU vs PMTUD

Lecture 37 Nagle’s Algorithm’s Effect on Performance

Lecture 38 Delayed Acknowledgment Effect on Performance

Lecture 39 Cost of Connection Establishment

Lecture 40 TCP Fast Open

Lecture 41 Listening Server

Lecture 42 TCP Head of line blocking

Lecture 43 The importance of Proxy and Reverse Proxies

Lecture 44 Load Balancing at Layer 4 vs Layer 7

Lecture 45 Network Access Control to Database Servers

Lecture 46 Networking with Docker

Section 8: Analyzing Protocols with Wireshark

Lecture 47 Wiresharking UDP

Lecture 48 Wiresharking TCP/HTTP

Lecture 49 Wiresharing HTTP/2 (Decrypting TLS)

Lecture 50 Wiresharking MongoDB

Lecture 51 Wiresharking Server Sent Events

Section 9: Answering your Questions

Lecture 52 Should Layer 4 Proxies buffer segments? – Q&A April 2022

Section 10: Course Summary

Lecture 53 Course Summary

Backend engineers,Frontend engineers who are interested to start building Backend apps,Full stack engineers,DevOps engineers,Site reliability engineers

Course Information:

Udemy | English | 12h 45m | 8.92 GB
Created by: Hussein Nasser

You Can See More Courses in the IT & Software >> Greetings from

New Courses

Scroll to Top