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/

10-16 20:08