How to Use This Course
How to Use This Course
Each module in this series is a mini-project — short enough to finish in a few sittings, but complete enough to do something visible.
The Rhythm
Here's what you'll see throughout:
Theory
A brief, beginner-friendly explanation of what happens at that layer — what problem it solves, what its header looks like, and how packets flow through it.
We'll keep it light on math and heavy on intuition and diagrams.
Hands-On Implementation
You'll open the accompanying Git repo and implement that layer step by step.
Each module ends with a working demo — maybe a successful ping, an open TCP port, or a web page served from your stack.
Quiz and Exercises
Short, practical questions to make sure you actually understand what you built.
Then one or two small coding challenges (e.g., "add checksum validation" or "print the header fields to the console").
Solutions and Discussion
We'll walk through the key parts of the solution and point out common pitfalls or extensions you can try next.
Versioning and Checkpoints
Each module corresponds to:
- A Git tag (e.g.
v00_orientation,v01_setup,v02_ethernet, …) - A Docker image tag (e.g.
netstack:mod00,netstack:mod01, …)
That means you can:
# Check out any point in history
git checkout v03_icmp
# Rebuild the exact Docker setup
docker-compose up --buildInfo: You'll always know exactly where you are and what "success" looks like before moving on.
Pedagogical Pacing
| Phase | Modules | Focus | Est. Time |
|---|---|---|---|
| Phase 1: Foundations | 0–4 | OSI, setup, L2/L3 basics | 1 week |
| Phase 2: Routing | 5–7 | Forwarding & NAT | 1 week |
| Phase 3: Transport | 8–10 | UDP/TCP | 2 weeks |
| Phase 4: Applications | 11–12 | HTTP server | 1 week |
| Phase 5: Extras | 13–14 | ICMP errors, IPv6 | optional |