Learning Resources
This module is populated from the local chunked books in library/raw/semester-05-os-networking/books and a small, curated set of external references. Use this page as a source map, not as an instruction to read everything.
Source Stack
| Book | Role | How to use it in this module |
|---|---|---|
| Computer Networking: A Top-Down Approach (Kurose & Ross) | Primary protocol source | Default escalation for layering, IP, TCP, UDP, HTTP, DNS, TLS |
| Unix Network Programming Vol. 1 (Stevens) | Primary sockets source | Default escalation for Berkeley sockets, concurrent server designs, debugging tools |
| High Performance Browser Networking (Grigorik) | Selective support | Best short read for HTTP/2, HTTP/3/QUIC, and transport tuning |
| OSTEP | Background only | Earlier modules already used it for concurrency and I/O; here only for review |
| RFCs | Canonical source | Open when you need the normative wording, not as a teaching text |
Resource Map by Cluster
Cluster 1: The Networking Mental Model
| Need | Best local chunk | Why |
|---|---|---|
| the five-layer model | CN 1.5.1 (Part 1) | Cleanest introduction to layered design |
| encapsulation mechanics | CN 1.5.2 | Short, diagram-heavy, canonical |
| what a protocol is | CN 1.1.3 | Good anchor for vocabulary |
| DNS as name resolution | CN 2.4.2 (Part 1) | First pass that avoids getting lost in records |
| MAC and ARP | CN 6.4.1 (Part 1) | Clear link-layer addressing story |
Cluster 2: IP and the Network Layer
| Need | Best local chunk | Why |
|---|---|---|
| IP overview | CN 4.3 intro | Grounding for the whole network layer |
| IPv4 addressing and subnets | CN 4.3.2 (Part 1), (Part 2) | Best subnet-math explanations |
| CIDR and prefix aggregation | CN 4.3.2 (Part 4) | Specifically covers CIDR |
| NAT | CN 4.3.3 | Short and precise |
| routing basics | CN 5.2 | Start here before LS/DV specifics |
| ICMP | CN 5.6 | Canonical chapter |
| IPv6 | UNP IPv6 addresses (Part 1) | Compact programmer-oriented view |
Cluster 3: TCP and UDP
| Need | Best local chunk | Why |
|---|---|---|
| UDP basics | CN 3.3 (Part 1), (Part 2) | Best standalone UDP explanation |
| TCP connection concept | CN 3.5.1 | Motivates sequence and ack numbers |
| TCP segment structure | CN 3.5.2 (Part 1), (Part 2) | Header field walkthrough |
| reliability mechanics | CN 3.5.4 (Part 1) | Sequence/ACK/retransmit interplay |
| flow control | CN 3.5.5 | Single-chunk, crisp |
| congestion control | CN 3.7.1 (Part 1) | Slow start and AIMD |
| handshake and close | CN 3.5.6 (Part 1), (Part 2), (Part 3) | Best full state-machine walkthrough |
| programmer view of TCP | UNP 2.6, 2.7 TIME_WAIT | Systems-level detail from Stevens |
Cluster 4: Application Protocols and HTTP
| Need | Best local chunk | Why |
|---|---|---|
| HTTP overview | CN 2.2.1 | Best first pass |
| persistent connections | CN 2.2.2 | Motivates keep-alive |
| message format | CN 2.2.3 | Byte-level shape |
| HTTP/2 | CN 2.2.6 | Short overview of framing and multiplexing |
| TLS "big picture" | CN 8.6.1, 8.6.2 | Cleanest starting point |
| public-key crypto | CN 8.2.2 (Part 1) | Background for the TLS handshake |
| message integrity & signatures | CN 8.3 | What certificates actually assert |
External:
- Beej's Guide to Network Programming -- compact socket reference, very practical.
- High Performance Browser Networking (Grigorik) -- best free read on HTTP/2, HTTP/3, and TLS performance.
- RFC 9110 -- HTTP Semantics
- RFC 9293 -- TCP (modern consolidation)
- RFC 8446 -- TLS 1.3
- RFC 9000 -- QUIC transport
Cluster 5: Socket Programming
| Need | Best local chunk | Why |
|---|---|---|
| API walkthrough | UNP: socket, bind, listen (Part 1), accept, connect | Canonical coverage of each syscall |
| TCP echo server | UNP 5.2, 5.9 summary | The classic running example |
| I/O models | UNP 6.2, select (Part 1), advanced polling (Part 1) | Blocking, select, and epoll/kqueue |
| threaded server | UNP 26.2 | Thread-per-connection worked example |
| preforked / prethreaded | UNP 30.6, 30.11, 30.12 | Classic scaling patterns |
| socket address structures | UNP 3.2 (Part 1) | You will need this almost daily |
| byte-order helpers | UNP 3.4 | Easy to forget; easy to debug with |
| CN socket examples | CN 2.7 intro, UDP, TCP (Part 1) | Python-oriented alternate phrasing |
| debugging | CN Wireshark labs: TCP/UDP, HTTP/DNS | Good guided captures to replicate |
| netstat programmer view | UNP Appendix: netstat | Short and focused |
Exercise Support Chunks
Use these when the concept pages are understood but your fluency is weak:
- CN Homework Problems Ch. 1-3 (Part 1), (Part 2)
- CN Wireshark Labs: Exploring TCP/UDP
- CN Wireshark Lab: SSL
- UNP Exercises chap. 2, chap. 4, chap. 5
Use Rules
- If you are stuck on a protocol concept, go to Kurose & Ross first.
- If you are stuck on a syscall or server architecture, go to Stevens first.
- For HTTP/2, HTTP/3, and TLS performance nuance, go to Grigorik.
- Open one chunk for one concept gap; do not wander a whole chapter sequence by default.
- If rereading is not fixing the problem, stop, close the book, and write the model or the code from memory before reading more.