Grokking Computer Networking for Software Engineers
Master Grokking Computer Networking for Software Engineers. Learn client-server architecture, Python socket programming, and key networking essentials for 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.
Course Content
1.Getting Started
Get familiar with computer networking fundamentals, practical skills, and essential Python tools.
- Course Learning Outcomes
- Learning Instruments
2.Getting to Know the Internet
Look at the Internet’s structure, history, standards, and communication protocols.
- What is the Internet?
- A Quick History of The Internet
- Internet Standards Documents
- Communication Over the Internet
3.Access Networks
Examine access networks, end systems, and various connection types, including DSL and fiber.
- 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
Find out about various computer network types by medium, distance, and topology.
- 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
Take a closer look at the OSI and TCP/IP models, layering and modularity in network infrastructures.
- Layered Architectures & Protocol Stacks
- The Open Systems Interconnection (OSI) Model
- The TCP/IP Model
6.The Application Layer
Focus on the application layer’s role, network architectures, HTTP dynamics, email protocols, DNS operations, and BitTorrent functionality.
- 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
Master the transport layer’s protocols, reliable data transfer, congestion control, and efficient packet handling.
- 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
Step through Python socket programming, from creating UDP and TCP sockets to building chat applications.
- 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
Unpack the core of network layer functionality, IP protocols, and routing methodologies.
- 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: OSPF
- Interdomain Routing: Border Gateway Protocol
- Border Gateway Protocol: Determining the Best Routes
10.Link Layer
Explore key aspects of the data link layer, including framing, error detection, MAC, and Ethernet.
- 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
Grasp the fundamentals of networking careers, roles, certifications, and course conclusion insights.
- Networks Career Paths
- Final Thoughts
Diana –
Good basic course, but I would appreciate more challenges, and more ideas or real life examples which will help me understand this