Computer Networking
A complete 25-lesson computer networking course, diagram-first — from packets, the OSI/TCP-IP layers, IP addressing and subnetting through TCP, DNS, HTTP, routing and NAT, then TLS, DHCP, firewalls, load balancing and IPv6, closing with a subnet calculator, a packet header parser, and a layered network diagnostic tool.
25 Lessons · 750 min · Learning Platform Editorial Team
What you need on the desk
- Python 3 (or just this site's built-in ▶ Run button — every example is standard-library only and runs in the browser)
- A terminal for the optional command-line explorations mentioned in the lessons (curl, ping, nslookup)
- A code editor (VS Code recommended)
Know this much before you start
- Comfortable running commands in a terminal — this course does not re-teach general command-line usage (the Linux and Bash tutorials on this site cover that)
- Basic Python reading ability helps, since most examples use small Python programs to make protocol structures concrete — but no networking experience at all is assumed
- No lab hardware, router access, or cloud account required — every code example is pure computation that runs anywhere, including this site's in-browser Python playground
By the end, you can
- Explain what a packet is and trace it through the OSI and TCP/IP layers, including how encapsulation nests each layer inside the next
- Do real subnet math: split a network with CIDR, compute network/broadcast/usable addresses, and decide whether two hosts are on the same subnet
- Explain TCP's handshake, reliability, and flow control, and articulate exactly when UDP is the better choice
- Trace a DNS resolution and an HTTP request end to end, and reason about caching, TTLs, and status codes
- Explain routing decisions, NAT, TLS's chain of trust, DHCP, firewalls, and load balancing, and distinguish latency from bandwidth from throughput
- Build real networking tools: a subnet calculator, a packet header parser with checksum verification, and a layered diagnostic report