我正在testing我们的客户端服务器应用程序使用NetLimiter这是一个交通控制软件。 我发现,当客户端正在从服务器接收文件,我使用NetLimiter设置下载速率为50K / S的值,通过连续点击button(增加速率从0K / s到50K / s,每次点击增加速度由1),那么传输将停止并且不会恢复,似乎来自服务器的一些控制包丢失。
由于未知原因,交通控制软件是否会拦截数据包而不向客户发送? 交通控制软件会丢弃应该发送给我们客户的tcp数据包吗?
[更多]交通控制软件确实打破了传输,因为我们的服务器将发送一些控制包到客户端来控制传输,例如停止传输或开始传输。 在testing过程中,我们发现“开始传输”控制包已经到达networking接口卡,但数据包没有被客户端接收到(有一个TCP套接字)。
谢谢
简而言之,Yesstream量控制软件确实可以在形成stream量时丢弃数据包。 对于TCP协议来说没关系,因为TCP将负责确保丢失的数据包被重新发送。
stream量调整Wiki描述了一些用于调整stream量的方法。 有许多algorithm可用,如红色 , 尾巴等。
由于未知原因,交通控制软件是否会拦截数据包而不向客户发送?
在发送之前,它将暂存(排队)一段时间,以确保满足特定configuration的速率。
交通控制软件会丢弃应该发送给我们客户的tcp数据包吗?
是的,例如,您可能在两个networking之间进行路由,其中一个networking的形状为50KB / s,另一个networking可能为100KB / s。 如果连续向50KB / s的networking上的主机发送100KB / s的数据,则需要在路由器中保存数据包以满足50KB / s的速率。 由于内存有限且队列大小经常被固定,因此您可能必须开始丢弃数据包。 丢包不是一件坏事。 TCP旨在恢复。 如果你排队,这可能是一个坏的,因为它可以增加显着的延迟。 所以丢包是明智的。
[更多]交通控制软件确实打破了传输,因为我们的服务器将发送一些控制包到客户端来控制传输,例如停止传输或开始传输。 在testing过程中,我们发现“开始传输”控制包已经到达networking接口卡,但数据包没有被客户端接收到(有一个TCP套接字)。
我讨厌这样说,但听起来像你的客户端服务器应用程序是破碎的东西。 通过互联网丢弃的数据包是正常的预期行为。
你失去了什么是你的控制命令。 这听起来像一个软件错误已经吞噬了他们!