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
Requirements
Basic programming experience
Recommended: Having built a backend application
Description
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..)
Overview
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 CourseDown.com