运行网络速度测试(如 speedtest.net)时,为什么距离较远的服务器会因为距离较远而导致速度较慢?
我认为数据包要经过更多的“跳跃”,并且第一个数据包比更近的服务器需要更长的时间才能到达,但是一旦第一个数据包到达并且“流”建立,它的流动速度不应该和附近的服务器一样快吗?
我把这个比喻成水(也许是错误的)——
我拿着两杯水,其中一杯倒进一根吸管,两秒钟后从另一端倒出。第二杯水则倒进三根吸管组成的路径,六秒钟后从另一端倒出。但现在两根吸管都已饱和,它们的倒水速度难道不应该一样吗?
为什么距离较远的服务器会导致带宽测试速度变慢?延迟响应变长是可以理解的,因为它是数量。然而,带宽速度测试是速度,因此,除非是跳数越多导致数据包丢失/错误路由的机会越多,否则我不明白为什么它会变慢。
答案1
Tcp 要求对每个数据包进行确认。有一个窗口大小,允许一些重新排序和延迟,但这是有限的。一旦计算机发送了那么多数据,它就必须等待确认,因此最大吞吐量受延迟限制,如 Wikipedia 页面上所示:http://en.m.wikipedia.org/wiki/TCP_tuning#TCP_speed_limits