Appendix
Reference material that every edition of the course relies on. The appendix holds the background that the classes and labs take for granted: how a request finds a server, how keys protect it, how an API is shaped and versioned, and the tools that build and ship the code. Read a page when a class or lab assumes it. Each page stands on its own, has interactive simulators where a concept is easier to see than to read, and ends with its key takeaways.
One request, end to end
Most of the appendix fits on the path of a single request from a browser to a microservice, and of the code that serves it. Press play and follow it:
sequenceDiagram
participant B as Browser
participant D as DNS resolver
participant N as Router / NAT
participant S as Microservice
B->>D: 1 · api.example.com?
D-->>B: 203.0.113.10 (cached for the TTL)
B->>N: 2 · TCP handshake to 203.0.113.10:443
N->>S: forwarded to a private address, 10.0.1.5:8080
S-->>B: 3 · TLS: a certificate signed with RSA or Ed25519
B->>S: 4 · GET /v2/orders (REST) or POST /graphql
S-->>B: 200 OK + JSON - DNS turns the name into an IP address, cached for a TTL: DNS.
- TCP opens a connection to a port. The packets cross public routers and reach a private network through NAT: ports, TCP & UDP and addressing & NAT.
- TLS proves the server's identity with public-key signatures and agrees on a symmetric key: RSA & Ed25519.
- The API answers in the style and version that the client asked for: REST vs GraphQL and versioning REST APIs.
The code behind the service was built on a development setup, versioned with Git (sometimes across submodules), and shipped by a GitHub Actions pipeline.
Sections
-
Networking
How packets travel and how a name becomes a connection. Explore CIDR blocks and a NAT table, see what a lost TCP segment costs, and tune a DNS TTL.
Overview · Addressing & NAT · Ports, TCP & UDP · DNS · Quiz
-
Security
Public-key cryptography: build a toy RSA key pair step by step, sign and verify, see why textbook RSA is unsafe, and when Ed25519 is the better choice.
-
APIs
Count the round trips and bytes that one screen costs with REST and with GraphQL, and evolve an API without breaking its clients.
-
Tooling
Prepare your machine, organize repositories, and see what decides how long a CI pipeline takes and what runs when a job fails.
Development setup · Oh My Zsh · Git submodules · GitHub Actions
Beyond the course: further reading, a short list of articles, RFCs and projects worth knowing.
How to use the simulators
Every simulator has the same controls. Play runs it, → advances one step, restart starts over and 1× changes the speed; with the simulator focused, the space bar plays and the arrow keys step. The Try it box below each simulator gives a short experiment to run, with the numbers you should see.