Round Trip Time Estimation
TCP must adapt to changing Internet propagation delays due to queuing delays, changing routes, speed-of-light delays, etc
Packets are also lost occasionally
It is hard to tell whether an overdue packet has been lost or is simply delayed longer than usual
TCP doesn’t have enough info in the header to reliably distinguish ACKs for successive retransmissions of the same data