The Layered Model and Why the Network Is Slow
You build things on top of the web, and you probably do not fully understand the web. That is the normal state of affairs, not an insult — most application engineers treat the net…
Network Fundamentals and Application Layer covers: The Layered Model and Why the Network Is Slow, The Link and Physical Layers, HTTP and the Application Layer, DNS, TLS and the Ruby Networking Stack. Year 2, Quarter 7. Includes 13 exercises and 3 projects.
This course unlocks once you've finished its prerequisite. Open prerequisite →
Complete prerequisites first to enroll.
You build things on top of the web, and you probably do not fully understand the web. That is the normal state of affairs, not an insult — most application engineers treat the net…
At the very bottom of the stack, all the elegant abstractions dissolve into a physical fact: some medium — a copper wire, a fiber strand, a patch of radio spectrum — has to carry …
Here is a fact that will change how you see your entire job: HTTP/1.1 is just text. A request is a method and a path, then headers that are plain key-value pairs separated by colo…
Before any HTTP request can happen, a name has to become an address. You type example.com; the machine needs 93.184.216.34. The system that performs this translation — the Domain …
Two ideas close this quarter. First, TLS — the S in HTTPS — the layer that turns the open, eavesdroppable internet into something you can send a password over. Every padlock in yo…
- [ ] Use dig and nslookup to trace DNS resolution for 5 domains — Record types A, AAAA, MX, CNAME, NS - [ ] Capture HTTP traffic with Wireshark — Identify GET/POST, headers, cook…
- [ ] Build an HTTP/1.1 server in C from scratch — Parse request line and headers, serve static files, handle 200/404/500 - [ ] Implement a DNS resolver in C — Send UDP query to r…
- [ ] Build a WebSocket server in Ruby — Implement handshake upgrade, frame parsing, ping/pong - [ ] Implement TLS 1.3 handshake concepts — Diffie-Hellman key exchange demo in Rub…
- [ ] Build a multi-threaded HTTP server in C — Support concurrent connections (thread per connection), static file serving, basic routing, access logging, graceful shutdown on SI…
Implement an HTTP/1.1 client using raw TCP sockets. Support GET and POST requests, parse response headers and body, handle chunked transfer encoding, follow redirects. No libcurl.…
Build a DNS resolver that sends UDP queries to a root server, follows referrals through TLD and authoritative servers, and resolves a domain name to an IP address. Support A, AAAA…
- [ ] Milestone 1: TCP server accepting connections using std.net.StreamServer, reading raw bytes - [ ] Milestone 2: HTTP request parser — method, path, headers, body using Zig sl…
- [ ] Explain the TCP/IP model (4 layers). What happens at each layer? - [ ] How does DNS resolution work? Walk through what happens from typing a URL to getting an IP address. - …
13 lessons. Read in order; spiral back when you need to. By the end you'll have used the core ideas twice — once on the abstract, once on something you'll meet at work next week.