Congestion Control Visualized
The sender does not know the path's capacity, so it probes: slow start doubles the window each round trip until a signal appears, then the algorithm switches to additive increase, growing one segment per RTT until loss — the only reliable signal — cuts the window back.
Topics covered:
- The window: how many unacknowledged bytes a sender may have in flight
- Slow start: exponential growth to find the capacity floor
- Congestion avoidance: additive increase after the threshold
- Loss as the signal: how duplicate ACKs and timeouts cut the window
- Reno, CUBIC, and BBR: what each changes about probing
- Bufferbloat: why loss-based control fills network buffers first
Related articles
TCP Congestion Control Explained: Slow Start, cwnd, and Bufferbloat
How TCP congestion control actually works — slow start, AIMD, cwnd, Reno vs CUBIC vs BBR, fast retransmit, and the bufferbloat problem you can observe with ss.
TCP Nagle and Delayed ACK: Why Small Writes Stall for 40ms
The Nagle algorithm and delayed ACK interaction that adds a 40ms stall to small writes, how to see it in tcpdump, and when TCP_NODELAY actually helps.
UDP and QUIC: When TCP Is the Wrong Transport
Why TCP's byte-stream ordering causes head-of-line blocking, and how QUIC fixes it — connection IDs, packet numbers, per-stream reliability, and 0-RTT.
More in Networking
HTTP/3 and QUIC Explained
The transport protocol that replaces TCP — multiplexing without head-of-line blocking, connection migration, and 0-RTT.
WatchThe Full Lifecycle of an HTTP Request
Watch a single request travel from a browser through DNS, TCP, TLS, HTTP, a load balancer, a server, and a database — with live packet-level tracing.
WatchIP Routing Explained
How a packet travels from host to host — longest-prefix matching in forwarding tables, next-hop resolution, and what actually changes at every router along the way.
DetailsLoad Balancing Protocols
Layer 4 vs. layer 7 balancing, NAT rewrites, and health checks — the actual packet and request flows that distribute traffic across a backend pool.
DetailsSockets and the Network Stack
The path a byte takes from a syscall to the wire — sockets, kernel buffers, queues, and protocol layers, and where sendto and recvfrom actually do their work.
DetailsHTTP/2 and HTTP/3
Streams, frames, and the transports underneath — what HTTP/2 multiplexing changes at the application layer and what moving to QUIC changes at the transport layer.
DetailsTLS Handshake Explained
The cryptographic negotiation inside TLS 1.3 — key exchange, certificate validation, and the single round trip that encrypts everything after it.
DetailsDNS Resolution Visualized
Follow a query from stub resolver to authoritative server — cache hits, recursive walking, TTL expiry, and the exact packet flow that turns a hostname into an IP.
DetailsTCP Three-Way Handshake Explained
SYN, SYN-ACK, ACK — the exact packets that open a TCP connection, the sequence numbers that synchronize both directions, and what each side actually stores.
DetailsDepth, delivered weekly
One technical dispatch a week — articles and episode notes before they go public.
One technical dispatch per week. No noise.