Build a TCP/IP Stack from Scratch · Module 01
Introduction & Learning Objectives
Module 1 — Building Your Networking Lab
Introduction & Learning Objectives
Welcome to the first hands-on module!
From this point onward, you'll start building the environment where your custom TCP/IP stack will live, run, and interact with real packets.
Before writing any networking code, we need a safe, repeatable sandbox — a place where you can intercept Ethernet frames, reboot freely, and break things without affecting your real machine.
That's exactly what we'll create in this module.
The Mini Network
You'll build a mini network using Docker containers that mimics a small LAN:
[ client container ] <── Docker bridge ──> [ stack container ]
- The client container behaves like an ordinary computer.
You'll use standard tools (
ping,curl,ip addr,tcpdump) to send real packets. - The stack container is where your user-space TCP/IP stack will eventually live. For now, it's just an empty box with network privileges — but by the end of this course, it will be speaking Ethernet, ARP, IP, TCP, and HTTP.
Learning Objectives
By the end of this module, you will:
- Understand how Docker creates virtual networks and bridges containers together.
- Build a minimal lab composed of two containers on the same subnet.
- Test connectivity between them using ping and tcpdump.
- Visualize the packet flow and identify ARP and ICMP frames.
- Version your setup with a Git tag so it becomes the foundation for all future modules.
This setup becomes your permanent playground — you'll use it for every protocol layer you implement from now on.