Fundamentals of Networking Engineering

Fundamentals of Networking Engineering

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 60 lectures (15h 19m) | 7.37 GB

Understanding the first principles of networking to build low latency and high throughput backends

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 gap

This course is not designed for those who want to pass network certification tests (CCNA, CCNP, CCIE etc..)

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
Table of Contents

1 Welcome
2 Who is this course for
3 Course Outline
4 Download Course Slides and resources here

Fundamentals of Networking
5 Client – Server Architecture
6 OSI Model
7 Host to Host communication

Internet Protocol (IP)
8 The IP Building Blocks
9 IP Packet
10 ICMP, PING, TraceRoute
11 ARP
12 Capturing IP, ARP and ICMP Packets with TCPDUMP
13 Routing Example
14 Private IP addresses (Alaska Airlines WIFI example)

User Datagram Protocol (UDP)
15 What Is UDP
16 User Datagram Structure
17 UDP Pros & Cons
18 UDP Server with Javascript using NodeJS
19 UDP Server with C
20 Capturing UDP traffic with TCPDUMP

Transmission Control Protocol (TCP)
21 What is TCP
22 TCP Segment
23 Flow Control
24 Congestion Control
25 Slow Start vs Congestion Avoidance
26 NAT
27 TCP Connection States
28 TCP Pros and Cons
29 TCP Server with Javascript using NodeJS
30 TCP Server with C
31 Capturing TCP Segments with TCPDUMP

Overview of Popular Networking Protocols
32 Networking Protocols Introduction
33 DNS
34 TLS

Networking Concepts that Affect Backend Performance
35 What is this section
36 MSS vs MTU vs PMTUD
37 Nagle’s Algorithm’s Effect on Performance
38 Delayed Acknowledgment Effect on Performance
39 Cost of Connection Establishment
40 TCP Fast Open
41 Listening Server
42 TCP Head of line blocking
43 The importance of Proxy and Reverse Proxies
44 Load Balancing at Layer 4 vs Layer 7
45 Network Access Control to Database Servers
46 Networking with Docker

Analyzing Protocols with Wireshark
47 Wiresharking UDP
48 Wiresharking TCPHTTP
49 Wiresharing HTTP2 (Decrypting TLS)
50 Wiresharking MongoDB
51 Wiresharking Server Sent Events

Answering your Questions
52 Should Layer 4 Proxies buffer segments
53 How does the Kernel manage TCP connections

Course Summary
54 Course Summary

55 Exposing local servers publicly
56 The Networking behind clicking a link
57 What is SNI (Server Name Indication TLS Extension)
58 Replacing TCP for Data Centers (Part 1)
59 Replacing TCP for Data Centers (Part 2)
60 Replacing TCP for Data Centers (Part 3)