TCP连接断开,串行太快?

我得到一个TCP连接与我的networking服务器工作真正的困难。 我认为这个问题可能与数据包的速度或sorting有关,因为连接似乎开始pipe理好了,然后在一段时间后失败。 我正在通过我编写的程序运行所有这些stream量,然后通过旧的SLIP协议通过串行线路运行。 我发现几乎没有关于如何使TCP连接SLOWER的信息,似乎像其他人都试图去其他方式。 如何限制一个tcp连接的速度? 我想我需要一次性拒绝双方试图发送的数量,以及他们决定重发的速度。

也没有人知道我可以如何降低Windows 7电脑上的窗口大小? (作为客户端试图连接到服务器),因为我认为这可能有助于减慢速度。 我已经尝试了所有的registry值,它们似乎没有效果,我closures了缩放和启发式,但仍然使用65500的窗口。

以下是一些来自客户端和服务器端的 Wireshark捕获。

我实际上是通过高延迟的情况对应用程序进行了相当多的testing,这是因为我所处的业务…(我们testing了各种200 – 1400毫秒的延迟链接)

通常情况下,我会设置一个Linux路由器,并使用tc来模拟延迟和数据包丢失(等等)…但在Windows中,我从来没有打扰过尝试。 我做了,但是find可能对您的环境有用的东西…

http://jagt.github.io/clumsy/index.html

显然,你可以添加延迟,抖动,重复数据包等,以模拟你正在寻找的任何东西。

说…我认真地怀疑订购/速度会导致Windows平台上的TCP连接严重问题。 Windows中的networking堆栈非常强大,可以防止乱序或丢失数据包。 由于缺乏安全感,连接将更有可能终止或由于不活动而终止。 更有可能的是,你不让Windows维护TCP会话,而是实现了你自己的ACK / SYN / etc等,而且还没有实现故障保护超时。

在那里有广域网优化设备,可能会导致TCP会话人为活动,但会话已终止。 (例如,河床可能导致这种情况。)这些问题可能会变得非常复杂,但是从我从包捕获中可以收集到的信息来看……河床不太可能在这里发挥作用。

作为最后的说明。 请不要依赖截断的pcap。 如果使用tcpdump ,不要忘记指定-s 0来捕获整个数据包,而不是简单的数据包。