Tcp 从Windows发送数据在任何具有高延迟的网络上都很慢,但linux很快

Tcp 从Windows发送数据在任何具有高延迟的网络上都很慢,但linux很快,tcp,Tcp,通过网络以高延迟将数据从Windows计算机发送到Windows或Linux需要使用10%的链路容量。同时,从Linux通过同一网络发送相同数据的速度几乎快了十倍。即使仅通过延迟数据包在低延迟连接上模拟高延迟,问题也是一样的 它似乎影响了我尝试过的所有应用程序。在Windows 7和Windows Server 2003上执行了测试,观察到了相同的行为 从tcpdump可以明显看出,Windows在快速突发中发送大约10个数据包,然后等待ACK,而Linux在不等待ACK的情况下发送大约100个

通过网络以高延迟将数据从Windows计算机发送到Windows或Linux需要使用10%的链路容量。同时,从Linux通过同一网络发送相同数据的速度几乎快了十倍。即使仅通过延迟数据包在低延迟连接上模拟高延迟,问题也是一样的

它似乎影响了我尝试过的所有应用程序。在Windows 7和Windows Server 2003上执行了测试,观察到了相同的行为

从tcpdump可以明显看出,Windows在快速突发中发送大约10个数据包,然后等待ACK,而Linux在不等待ACK的情况下发送大约100个数据包

我尝试启用复合TCP,但没有改进


我正在寻找任何关于如何了解情况的建议。以及如何修复它。

通过增加Windows注册表中TCP发送和接收缓冲区的大小,我能够完全解决我的问题(需要重新启动):

如果这些键不存在,则这两个键的默认值均为8KB,这是Windows等待确认后的数据量

还要确保

netsh interface tcp show global
不显示

Receive Window Auto-Tuning Level    : disabled
否则,TCP窗口缩放将被禁用,不仅用于接收,也用于发送,这将显著限制连接速度。要启用TCP窗口缩放,请将自动调整级别设置为正常值:

netsh interface tcp set global autotuninglevel=normal

通过增加Windows注册表中TCP发送和接收缓冲区的大小,我能够完全解决我的问题(需要重新启动):

如果这些键不存在,则这两个键的默认值均为8KB,这是Windows等待确认后的数据量

还要确保

netsh interface tcp show global
不显示

Receive Window Auto-Tuning Level    : disabled
否则,TCP窗口缩放将被禁用,不仅用于接收,也用于发送,这将显著限制连接速度。要启用TCP窗口缩放,请将自动调整级别设置为正常值:

netsh interface tcp set global autotuninglevel=normal

这不是编程问题,与StackOverflow无关。请花一些时间复习,以便更熟悉此处适合(或不适合)提问的问题类型。保持主题化有助于保持如此有用的编程资源。谢谢。:)它发生在任何LFN上,甚至是模拟的带有人工延迟数据包的LFN。在发布之前,我阅读了FAQ,在我看来,针对Windows的任何网络软件的开发人员都必须处理这个问题,因此它适用于StackOverflow。我只是措辞不当,还是你认为它仍然离题?离题了。:)这是一个网络问题,而不是编程问题,除非你可以发布导致你出现问题的代码。如果我问一个关于我应该买什么样的电脑的问题,这是离题的,即使我说我在用电脑为我的编程工作写代码。这不是一个编程问题,对于StackOverflow来说也是离题的。请花一些时间复习,以便更熟悉此处适合(或不适合)提问的问题类型。保持主题化有助于保持如此有用的编程资源。谢谢。:)它发生在任何LFN上,甚至是模拟的带有人工延迟数据包的LFN。在发布之前,我阅读了FAQ,在我看来,针对Windows的任何网络软件的开发人员都必须处理这个问题,因此它适用于StackOverflow。我只是措辞不当,还是你认为它仍然离题?离题了。:)这是一个网络问题,而不是编程问题,除非你可以发布导致你出现问题的代码。如果我问一个关于我应该买什么样的电脑的问题,这是离题的,即使我说我在用电脑为我的编程工作写代码。