TCP uses a retransmission queue and timers to reliably retransmit lost data segments. Each sent segment is placed on the queue and given a retransmission timer. If an acknowledgment is not received before the timer expires, the segment is retransmitted. There are different policies for handling retransmissions of subsequent outstanding segments. TCP also adapts retransmission timers dynamically based on measurements of the round-trip time between devices to account for varying network conditions. The window size advertised by a receiving device controls the amount of outstanding data and affects the sending rate.