TCP Latency Lab
royhp.comData segments stream from the Client to the Server; each one is answered by an ACK. A sender may only keep one window of unacknowledged data in flight, so steady-state throughput is roughly window ÷ RTT — capped by the link's bandwidth. The window that exactly fills the pipe is the bandwidth-delay product (BDP = bandwidth × RTT). Drag the sliders and watch the wire, the metrics, and the timeline react live.
Try this: with the defaults the window is smaller than the BDP, so you're window-limited — push Window size up toward the white BDP marker and watch throughput climb to the bandwidth ceiling. Go past it and the extra bytes just pile into the bottleneck queue: throughput stays flat but measured RTT balloons (bufferbloat). Raise Packet loss to see retransmits stall the window; switch to AIMD for the classic slow-start ramp and sawtooth back-off. The Satellite preset shows why long fat networks need huge windows — throughput ≈ window ÷ RTT.