Networking
The network is unreliable, and every interesting problem here is a consequence of that fact.
On this page
The working table of contents.
- 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.
- 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).
- 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.
- TCP — the reliable pipe. Sequence numbers, acknowledgments, retransmission, congestion control. Why it's slow to start (three-way handshake, slow start).
- DNS — the internet's phone book. Name → IP address. Caching, TTLs, the hierarchy (root → TLD → authoritative).
- 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).
- 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.