我注意到,当我同时下载多个文件时,其中一个文件下载完成后,它所消耗的带宽不会立即分配给其他文件。例如,如果我有两个文件以 100 Kb/s 的速度下载,其中一个文件下载完成后,另一个文件不会立即加速到 200 Kb/s。它确实会加速,但速度相当慢,可能每隔几秒钟才会加速几 Kb/s。
类似地,当我以 200 Kb/s 的速度下载一个文件,然后开始下载另一个文件时,第一个文件不会立即减慢速度以允许另一个文件获得相同数量的带宽。
与服务器和网络容量相比,这些下载量很小,因此不可能是容量问题。为什么我的计算机或服务器在下载之间平均分配带宽的速度如此之慢?
请注意,我不是在问为什么我的下载速度很慢。我是在问为什么带宽重新分配并发下载速度很慢。
答案1
您如何测量每次下载的速度?如果您只看下载客户端显示的数字,那么它可能是长时间计算的平均速度,即如果您以 100 KB/s 的速度下载了 10 分钟,然后速度跳升至 200 KB/s 并以该速率继续下载一分钟,则整个时间的平均速度仍为 ~109 KB/s。如果您想实时跟踪连接速度,您可以使用Linux 上的iftop
或等工具iptraf-ng
,Windows 上可能也有类似的工具。
答案2
您通过 TCP 下载,TCP 具有避免链路过载的功能。过载会导致拥塞和数据包丢失。两端的 TCP 堆栈需要几秒钟才能注意到数据包到达速度更快,因此它们可以逐渐加速到新的最大速度。
这是理论上的答案。实际上,@Jakub-Pasoń 的注释可能也有道理,他指出,显示的下载速度可能是平均值,不会立即显示变化。
答案3
假设下载是通过 TCP 进行的,答案取决于https://en.wikipedia.org/wiki/TCP_congestion-avoidance_algorithm客户端和服务器。需要更多信息才能得到更明确的答案,但也许这个可以满足您的好奇心。