下载两个文件时,为什么第二个文件在第一个文件完成后不会突然加速?

我注意到,当我一次下载多个文件,其中一个完成时,它耗费的带宽不会立即分配给其他人。 例如,如果我有两个文件以每个100 Kb / s的速度下载,一个完成,另一个不会立即达到200 Kb / s。 它确实加快了速度,但速度却很慢,可能每隔几秒就会有几Kb。

同样,当我以200Kb / s的速度下载一个文件,然后开始下载另一个文件时,第一个文件不会立即放慢速度,让另一个文件带宽相等。

与服务器和networking容量相比,这些只是很小的下载,所以它不能成为容量问题。 为什么我的电脑或服务器如此之慢以便在下载中平均分配带宽?

请注意,我不问为什么我的下载缓慢。 我在问为什么同时下载的带宽重新分配是缓慢的。

你如何测量每个下载的速度? 如果您只是查看下载客户端显示的数字,则可能是长时间计算的平均速度,即如果您已经以100 KB / s的速度下载了10分钟,然后速度跳至200 KB / s,并以这个速度继续下一分钟,平均时间仍然是〜109 KB / s。 如果您想要实时跟踪连接速度,可以在Linux上使用iftopiptraf-ng等工具,Windows上也可能有类似的工具。

您通过TCP下载,并且TCP有一个function可以避免超载您的链接。 过载会导致拥塞和丢包。 双方的TCP协议栈需要几秒钟的时间才能看到数据包到达的速度更快,因此可以逐渐增加到新的最大速度。

这是理论上的答案。 在实践中,@ Jakub-Pasoń可能也有一点,他指出下载速度可能是平均值,不会立即显示变化。

假设下载是通过TCP,答案取决于客户端和服务器的https://en.wikipedia.org/wiki/TCP_congestion-avoidance_algorithm 。 更多的信息将需要一个更明确的答案,但也许这个会满足你的好奇心。