Skip to main content
networking

TCP internals — handshake and congestion control

12 min read
Fully authored

The 3-way handshake, sliding window, and how BBR/CUBIC decide how fast to send.

Every senior candidate should be able to explain what happens between typing a URL and getting bytes back. Below that URL is TCP — the reliable, ordered, congestion-aware protocol that powers ~95% of the web.

The 3-way handshake

Client → Server: SYN, seq=1000
Server → Client: SYN-ACK, seq=8000, ack=1001
Client → Server: ACK, seq=1001, ack=8001
Connection established. Bytes can flow.

Cost: 1 RTT before any data. LAN: ~1ms. Same-region: ~5-20ms. Cross-region: 100-300ms. This is the wall your HTTP/1.1 request hits.

TCP Fast Open (TFO) skips this for reconnects. HTTP/2 multiplexes on ONE handshake. QUIC (HTTP/3) integrates TLS + TCP handshake into 0-1 RTT.

The senior interview soundbite

“TCP handshake is 1 RTT before data — that's why HTTP/2 multiplexes and HTTP/3 (QUIC) integrates with TLS. Flow control is receiver-side; congestion control is network-side. Switch to BBR for cross-region and mobile; 2-10× throughput on lossy links.”

Practice what you just read

Every foundation concept has a companion quiz to close the loop.