How does a stream of bytes arrive perfectly intact across a network that actively drops, reorders, and duplicates packets? This course dissects the Transmission Control Protocol (TCP): the state machine, the sequence numbers, flow control, and congestion control. Build a connection, trigger a retransmission, and learn why your app feels slow when the network is congested.
Before data can flow, state must be synchronized. Send a SYN, receive a SYN-ACK, and understand why the 3-way handshake exists. Then, close the connection gracefully with a FIN or abruptly with a RST.
The core of TCP: masking packet loss. Map sequence numbers to byte streams, send overlapping data, and watch the Retransmission Timeout (RTO) timer step in when the network swallows your packets.
Protecting the receiver from being crushed. Play the role of a fast sender hitting a slow application. Watch the receive window (rwnd) shrink to zero, forcing the sender into a zero-window probe state.
Flow control protects the receiver: congestion control protects the network. See why connections start slow (Slow Start), grow linearly (AIMD), and aggressively scale back when the network buffer overflows.
TCP's guarantee of in-order delivery creates a fatal flaw for real-time systems: Head-of-Line blocking. Race a TCP stream against a UDP stream through a lossy link and see why video calls and games bypass TCP.