Grokking Computer Networking for Software Engineers

Grokking Computer Networking for Software Engineers

Grokking Computer Networking for Software Engineers
Grokking Computer Networking for Software Engineers

Grokking Computer Networking for Software Engineers

The way applications are developed today requires software engineers to have a firm understanding of client-server architecture and networking.

If you’re planning to write web applications, or apps that communicate with a remote server, then networking is an essential skill. With this in mind, it’s clear that what you do as a software engineer will be deeply rooted in networking.

This course will teach you the fundamentals of networks, socket programming in Python, command-line tools and the main protocols of each layer.

Additionally, you will get hands-on experience with not only socket programming, but with implementing network protocols that require distributed processing.

Join us in a deep dive on everything network-related.


1. Getting Started

  • Course Learning Outcomes
  • Learning Instruments
2. Getting to Know the Internet
  • What is the Internet?
  • A Quick History of The Internet
  • Internet Standards Documents
  • Communication Over the Internet
3. Access Networks
  • The Edge of The Internet: End Systems
  • What Are Access Networks?
  • Types of Access Networks: DSL
  • Types of Access Networks: Cable, FTTH, Dial-Up, and Satellite
4. Types of Computer Networks
  • Types by Physical Medium: Guided Physical Media
  • Types by Physical Medium: Unguided Physical Media
  • Types by Geographical Distance
  • Types by Topology
5. Network Infrastructure: The OSI Model
  • Layered Architectures & Protocol Stacks
  • The Open Systems Interconnection (OSI) Model
  • The TCP/IP Model
6. The Application Layer
  • What Is the Application Layer?
  • Network Application Architectures
  • P2P vs. Client-Server
  • How Processes Communicate
  • HTTP: The Basics
  • HTTP: Request Messages
  • Exercise: Looking at a Real HTTP Request
  • HTTP: Response Messages
  • Exercise: Looking at a Real HTTP Response
  • Cookies
  • Exercise: View and Manage Your Cookies
  • Email: SMTP
  • Exercise: Checking a Domain’s Mail Server with nslookup
  • Email: POP & IMAP
  • Email: Message Format
  • DNS: Introduction
  • Exercise: Finding Name Servers
  • DNS: Records and Messages
  • Exercise: Looking At DNS Response Messages and Resource Records
  • BitTorrent
7. The Transport Layer
  • What Is the Transport Layer?
  • Multiplexing and Demultiplexing
  • Multiplexing & Demultiplexing in UDP
  • Introduction to Congestion Control
  • More on Principles of Congestion Control
  • Principles of Reliable Data Transfer
  • Reliable Data Transfer: Sliding Window
  • Reliable Data Transfer: Go-back-n
  • The User Datagram Protocol
  • UDP Checksum Calculation & Why UDP?
  • Exercise: Capturing UDP Packets
  • The Transmission Control Protocol
  • Key Features of the Transmission Control Protocol
  • TCP Segment Header
  • TCP Header Flags
  • TCP Headers: Window Size, Checksum & More
  • TCP Connection Establishment: Three-way Handshake
  • Other TCP Connection Establishment Methods
  • When Connection Establishment Fails: Syn Floods & Retransmission
  • TCP Connection Release
  • Efficient data transmission with TCP
  • TCP Window Scaling
  • Exercise: Measuring RTT with Ping
  • TCP Congestion Control: AIMD
  • TCP Congestion Control: Slow Start
8. An Introduction to Socket Programming with Python
  • The Basics
  • Setting up a UDP Socket
  • Writing a UDP Server
  • Writing a UDP Client Program
  • Running The UDP Server & Client Together
  • Improvements to UDP Programs: Avoiding Arbitrary Servers
  • Project: Write a UDP Chat App!
  • Solution: Write a UDP Chat App!
  • A TCP Client-Server Program
9. Network Layer
  • What Is the Network Layer?
  • Organization of the Network layer
  • The Control Plane: Static & Dynamic Routing
  • The Control Plane: Distance Vector - Routing Information Protocol
  • Programming Challenge: Routing Information Protocol
  • Solution Review: Routing Information Protocol
  • The Control Plane: Link State Routing
  • The Control Plane: Route Calculation - Dijkstra's
  • Programming Challenge: Implementing Dijkstra's
  • Solution Review: Implementing Dijkstra's
  • The Internet Protocol: Introduction to IPV4
  • The Internet Protocol: IPV4 Address Allocation
  • The Internet Protocol: IPV4 Packets
  • The Internet Protocol: IPV4 Packet Fragmentation & Reassembly
  • The Internet Control Message Protocol (ICMP)
  • Exercise: Sending ICMP Messages With Ping & Traceroute
  • Address Resolution Protocol (ARP)
  • Dynamic Host Configuration Protocol (DHCP)
  • IPv4 in Practice: The Life of a Packet
  • Why IPv6?
  • IPv6 Features
  • Middleboxes: Firewalls
  • Middleboxes: NATs
  • Introduction to Routing in IP: Intradomain & Interdomain
  • Intradomain Routing: OSFP
  • Interdomain Routing: Border Gateway Protocol
  • Border Gateway Protocol: Determining the Best Routes
10. Link Layer
  • What is The Data Link Layer?
  • Principles of The Data Link Layer: The Framing Problem
  • Principles of The Data Link Layer: Error Detection
  • Medium Access Control: Static Allocation
  • Medium Access Control: Stochastic Methods - ALOHA
  • Medium Access Control: Stochastic Methods - CSMA
  • Medium Access Control: Stochastic Methods - CSMA/CD
  • Medium Access Control: Stochastic Methods - Optimizing CSMA/CD
  • Introduction to Ethernet
  • Ethernet Frame Format
  • Physical Layers for Ethernet
  • Ethernet Switches
  • Programming Challenge: Spanning Tree Protocol
  • Solution Review: Spanning Tree Protocol
  • Virtual LANs
11. Conclusion
  • Networks Career Paths
  • Final Thoughts

Share This :
Santosh Kumar

We are sharing the knowledge for free of charge and help especially third world countries who can create a simple blog and start making money from own blog. so we have launched this site. Facebook | Twitter | Pinterest | LinkedIn