TCP uses sliding window flow control. The receiver defines the window, and the sender can transmit any of the data in the window. When the sender receives an acknowledgment, the window moves ahead to include new, unsent data.