Wikipedia article on TCP 表示传输 TCP 段的 IP 数据包有时会丢失,并且 TCP“请求重新传输丢失的数据”。
请求重传丢失数据的具体规则是什么?在什么时间频率执行重传请求?数字有上限吗?客户端是否有功能可以指示服务器忘记 IP 数据包丢失时丢失的整个 TCP 段?
最佳答案
请求重传丢失数据的具体规则是什么?
接收方不请求重传。发送方等待发送到客户端的字节范围的 ACK,如果未收到,则在特定时间间隔后重新发送数据包。
这是 ARQ(自动重复请求)。有几种方法可以实现这一点。
Stop-and-wait ARQ
Go-Back-N ARQ
Selective Repeat ARQ
在 RFC 3366 中有详细说明。
重传请求在什么时间频率执行?
标准不强制执行重传次数和尝试次数。它由不同的操作系统实现,但方法是固定的。 (可能是对操作系统进行指纹识别的一种方法?)
超时是根据 RTT(往返时间)时间来衡量的。但这不是经常需要的,因为快速重传会在收到 3 Duplicate ACK 时启动。
数字有上限吗?
就在这里。经过一定次数的重试后,主机被认为“宕机”,发送方放弃并断开 TCP 连接。
客户端是否有功能可以指示服务器忘记 IP 数据包丢失时丢失的整个 TCP 段?
重点是可靠的通信。如果您希望客户端忘记某些部分,您一开始就不会使用 TCP。 (也许是UDP?)
关于networking - TCP的重传规则是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12956685/