A hardware-based, reproducible little internet for learning how networking actually works.
Networking is one of the most global and durable technologies you'll ever touch. Its fundamentals are going nowhere, and when you make all those invisible layers of the internet visible and intuitive to you, you become a better developer.
And have some fun along the way.
We start with a single network, then two networks, and then a working facsimile of the internet you know and love. Each phase comes with lessons as technical write-ups (ngrok blog), YouTube videos (ngrok @ YouTube), and follow-along scripts in this repo.
Each phase includes just enough hardware to make the next set of ideas tangible.
- Phase 1: a network. Two Pis and a managed switch. How do devices on the same network find and talk to each other? ARP, MAC addresses, broadcast domains, Ethernet frames, packet capture, how switches work, VLANs, port mirroring, ARP cache poisoning.
- Phase 2: two networks. Add a router. A Pi in network A can't reach a Pi in network B, so something has to decide where the packet goes next. Routers, IPs, subnets, routing tables, NAT, traceroute.
- Phase 3: the little internet. Multiple autonomous networks that have to advertise their reachability to one another. Autonomous systems, BGP, path selection, convergence, plus side quests like DNS, TLS, and Pi-hole.
- Gather the hardware. See
BOM.mdfor the full parts list by phase. - Download a prebuilt image from Releases, or build your own.
Either way, see
image/for getting the Raspberry Pi OS image (built with pi-gen) and flashing it to your microSD cards. - Follow the lessons. (Coming soon. Start with lesson 00, "why can't these two Pis just talk to each other?")
.
├── README.md You are here.
├── BOM.md Bill of materials — every part, by phase, with vendors.
├── image/ pi-gen config that builds the Raspberry Pi OS image the
│ nodes run, plus instructions for building and flashing it.
└── lessons/ (coming soon) One directory per lesson: an explainer, the
scripts to run it yourself, and recorded packet captures.