TCP中的重传概念

Re-transmission concept in TCP

服务器向客户端发送了数据,但客户端没有为数据发送ACK。所以一旦 RTT 完成,服务器将再次向客户端重新发送数据......这样它会尝试发送数据多长时间?服务器尝试将数据发送到客户端的最长时间是多少?

为了为发送的数据提供基本的可靠性,每个设备的 TCP 实现都使用重传队列。每个发送的段都放在队列中,并为它启动一个重传计时器。当收到对段中数据的确认时,它会从重传队列中删除。如果计时器在收到确认之前关闭,则重新传输该段并重新启动计时器。

TCP 使用指数退避,这意味着它将每次未确认的重传之间的时间加倍。一旦达到最大阈值,连接就会关闭。此限制因系统而异,但通常介于 2 and 9 minutes.

之间