首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP的重传规则是什么?

TCP的重传规则是什么?
EN

Stack Overflow用户
提问于 2012-10-18 22:11:18
回答 2查看 115.4K关注 0票数 55

Wikipedia article on TCP指示传输TCP段的IP分组有时会丢失,并且TCP“请求重传丢失的数据”。

请求重传丢失数据的规则到底是什么?重传请求的频率是多少?这个数字有上限吗?客户端是否有功能指示服务器在IP数据包丢失时忽略丢失部分的整个TCP数据段?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-18 22:17:11

请求重传丢失数据的规则到底是什么?

接收器不请求重传。发送者等待发送到客户端的字节范围的ACK,并且当没有接收到时,在特定间隔之后重新发送分组。这是 (Automatic Repeat reQuest)。这有几种实现方式。

代码语言:javascript
复制
Stop-and-wait ARQ
Go-Back-N ARQ
Selective Repeat ARQ

在中有详细介绍。

以什么时间频率执行重新传输请求?

重传次数和尝试次数不是标准强制执行的。它由不同的操作系统以不同的方式实现,但方法是固定的。(也许是获取OSs指纹的方法之一?)

超时是根据RTT (往返时间)时间来测量的。但这并不是经常需要的,因为当收到3重复的ACK时,就会启动快速重传。

这个数字有上限吗?

是的有。经过一定次数的重试后,主机被视为“关闭”,发送方放弃并断开TCP连接。

TCP客户端是否有功能指示服务器忘记整个数据段在IP数据包丢失时丢失了哪一部分?

整个要点是可靠的通信。如果你想让客户端忘记某些部分,你一开始就不会使用TCP。(也许是UDP?)

票数 58
EN

Stack Overflow用户

发布于 2012-10-18 22:18:11

没有固定的重传时间。简单的实现估计RTT (往返时间),如果在2倍的时间内没有接收到要发送数据的ACK,则它们会重新发送。

然后,它们将等待时间增加一倍,如果再次没有回复,则再次重新发送。冲洗一下。重复一遍。

更复杂的系统可以更好地估计ACK需要多长时间,以及准确地猜测丢失了哪些数据。

底线是,对于何时重新传输,没有硬性规定。这取决于实现。所有重新传输都是由发送者基于缺乏来自接收者的响应来触发的。

TCP 从不丢弃数据,所以没有办法指示服务器应该忘记某些数据段。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12956685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档