Networking

The network is unreliable, and every interesting problem here is a consequence of that fact.

On this page

The working table of contents.

  1. The fundamental problem — two computers need to exchange bytes, and there's a wire (or air) between them that can delay, reorder, duplicate, or drop those bytes.
  2. Layers as separation of concerns — physical (electrical signals), link (frames between neighbors), network (packets across routers, IP), transport (reliable streams or fast datagrams, TCP/UDP), application (HTTP, DNS, the protocols you actually use).
  3. IP addresses and routing — how a packet finds its way across the internet. The core idea: each router only needs to know the next hop, not the whole path.
  4. TCP — the reliable pipe. Sequence numbers, acknowledgments, retransmission, congestion control. Why it's slow to start (three-way handshake, slow start).
  5. DNS — the internet's phone book. Name → IP address. Caching, TTLs, the hierarchy (root → TLD → authoritative).
  6. HTTP — the protocol of the web. Request/response, methods, status codes, headers. Evolution: HTTP/1.1 (text, keep-alive) → HTTP/2 (binary, multiplexed) → HTTP/3 (QUIC, UDP-based).
  7. TLS — how two strangers establish trust and encrypt everything. Certificates, the handshake (just the idea, not every byte).
Going deeper

Branches that earn their own article.

  • Physical layer (Ethernet, fiber, wireless, signal encoding).
  • BGP and internet routing in depth.
  • TCP congestion control algorithms (Reno, CUBIC, BBR).
  • UDP-based protocols.
  • DNS security (DNSSEC, DoH, DoT).
  • WebSockets, gRPC, Server-Sent Events.
  • NAT, firewalls, load balancers (L4 vs L7).
  • CDNs.
  • QUIC protocol internals.