Skip to main content

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

BookRoleHow to use it in this module
Computer Networking: A Top-Down Approach (Kurose & Ross)Primary protocol sourceDefault escalation for layering, IP, TCP, UDP, HTTP, DNS, TLS
Unix Network Programming Vol. 1 (Stevens)Primary sockets sourceDefault escalation for Berkeley sockets, concurrent server designs, debugging tools
High Performance Browser Networking (Grigorik)Selective supportBest short read for HTTP/2, HTTP/3/QUIC, and transport tuning
OSTEPBackground onlyEarlier modules already used it for concurrency and I/O; here only for review
RFCsCanonical sourceOpen when you need the normative wording, not as a teaching text

Resource Map by Cluster

Cluster 1: The Networking Mental Model

NeedBest local chunkWhy
the five-layer modelCN 1.5.1 (Part 1)Cleanest introduction to layered design
encapsulation mechanicsCN 1.5.2Short, diagram-heavy, canonical
what a protocol isCN 1.1.3Good anchor for vocabulary
DNS as name resolutionCN 2.4.2 (Part 1)First pass that avoids getting lost in records
MAC and ARPCN 6.4.1 (Part 1)Clear link-layer addressing story

Cluster 2: IP and the Network Layer

NeedBest local chunkWhy
IP overviewCN 4.3 introGrounding for the whole network layer
IPv4 addressing and subnetsCN 4.3.2 (Part 1), (Part 2)Best subnet-math explanations
CIDR and prefix aggregationCN 4.3.2 (Part 4)Specifically covers CIDR
NATCN 4.3.3Short and precise
routing basicsCN 5.2Start here before LS/DV specifics
ICMPCN 5.6Canonical chapter
IPv6UNP IPv6 addresses (Part 1)Compact programmer-oriented view

Cluster 3: TCP and UDP

NeedBest local chunkWhy
UDP basicsCN 3.3 (Part 1), (Part 2)Best standalone UDP explanation
TCP connection conceptCN 3.5.1Motivates sequence and ack numbers
TCP segment structureCN 3.5.2 (Part 1), (Part 2)Header field walkthrough
reliability mechanicsCN 3.5.4 (Part 1)Sequence/ACK/retransmit interplay
flow controlCN 3.5.5Single-chunk, crisp
congestion controlCN 3.7.1 (Part 1)Slow start and AIMD
handshake and closeCN 3.5.6 (Part 1), (Part 2), (Part 3)Best full state-machine walkthrough
programmer view of TCPUNP 2.6, 2.7 TIME_WAITSystems-level detail from Stevens

Cluster 4: Application Protocols and HTTP

NeedBest local chunkWhy
HTTP overviewCN 2.2.1Best first pass
persistent connectionsCN 2.2.2Motivates keep-alive
message formatCN 2.2.3Byte-level shape
HTTP/2CN 2.2.6Short overview of framing and multiplexing
TLS "big picture"CN 8.6.1, 8.6.2Cleanest starting point
public-key cryptoCN 8.2.2 (Part 1)Background for the TLS handshake
message integrity & signaturesCN 8.3What certificates actually assert

External:

Cluster 5: Socket Programming

NeedBest local chunkWhy
API walkthroughUNP: socket, bind, listen (Part 1), accept, connectCanonical coverage of each syscall
TCP echo serverUNP 5.2, 5.9 summaryThe classic running example
I/O modelsUNP 6.2, select (Part 1), advanced polling (Part 1)Blocking, select, and epoll/kqueue
threaded serverUNP 26.2Thread-per-connection worked example
preforked / prethreadedUNP 30.6, 30.11, 30.12Classic scaling patterns
socket address structuresUNP 3.2 (Part 1)You will need this almost daily
byte-order helpersUNP 3.4Easy to forget; easy to debug with
CN socket examplesCN 2.7 intro, UDP, TCP (Part 1)Python-oriented alternate phrasing
debuggingCN Wireshark labs: TCP/UDP, HTTP/DNSGood guided captures to replicate
netstat programmer viewUNP Appendix: netstatShort and focused

Exercise Support Chunks

Use these when the concept pages are understood but your fluency is weak:

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.