我面临一个奇怪的问题。我们有两个通过RFC进行通信的系统,但这种通信每次都会因以下问题而中断:
客户端接收一个TCP ACK,SLE=2734286,SLR=2777173
客户机然后开始重新传输“丢失”的包
然后接收一个TCP DUP ACK,SACK:2777089-2777173 2734286-2777173
这很奇怪,不是吗?sack参数重叠。然后客户端再次发送丢失的包,但始终接收TCP DUP ACK。试了5次后,客户就放弃了。
从Windows2003到Linux2.6.32。
你们中有人知道这样的问题吗?网络连接本身没有问题(例如,当通过ssh复制数据时,sack协议似乎工作正常)。

最佳答案

根据rfc(http://tools.ietf.org/html/rfc218),这些sack没有什么问题。数据接收器应该修剪第二个袋子,但这不是一个坚定的要求(来自第4节):
SACK选项应该通过重复最近的
基于前一个sack中的第一个sack块报告的sack块
选项)不是已包含在
正在构造SACK选项
我怀疑数据接收器的实现(在您的示例中,这是服务器)只是在一个段到达时生成一个SACK条目,并将其推到一个列表中,而不必每次尝试折叠列表。

关于networking - TCP SACK重叠选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13273066/

10-13 05:27