我刚刚和我的一位同事发生争执,以为我会就此与专家联系。这是场景。我们正在使用一个网站来衡量您的连接速度。我们使用远离我们的服务器(我们在马来西亚,而服务器在美国)进行了测试。大约是2 Mbps。然后我们在新加坡尝试了一个服务器,它的速度要快得多(大约15 Mbps)。我的同事认为这是因为物理距离,而我认为这并不重要。我的理解是,一旦完成了初始握手并且数据流已经开始,服务器位于何处都没关系,结果应该几乎相同。我在这里想念什么吗?真正如何运作?
我刚刚和我的一位同事发生争执,以为我会就此与专家联系。这是场景。我们正在使用一个网站来衡量您的连接速度。我们使用远离我们的服务器(我们在马来西亚,而服务器在美国)进行了测试。大约是2 Mbps。然后我们在新加坡尝试了一个服务器,它的速度要快得多(大约15 Mbps)。我的同事认为这是因为物理距离,而我认为这并不重要。我的理解是,一旦完成了初始握手并且数据流已经开始,服务器位于何处都没关系,结果应该几乎相同。我在这里想念什么吗?真正如何运作?
Answers:
我的同事认为这是因为物理距离,而我认为这并不重要。我的理解是,一旦完成了初始握手并且数据流已经开始,服务器位于何处都没关系,结果应该几乎相同。我在这里想念什么吗?真正如何运作?
你们俩在历史的某个时刻都是正确的,但是您的理解在大多数情况下是正确的……今天:)。在您的朋友给出的较旧答案与我们今天拥有的功能之间,有一些因素发生了变化。
您看到的结果差异可能受到以下因素的影响:
正如您的朋友所提到的,TCP的较早实现受到TCP标头中原始16位接收窗口大小的限制(参见RFC 793:第3.1节);RWIN控制单个TCP套接字中可以等待多少未确认的数据。16位RWIN使用高带宽延迟产品来限制Internet路径(当今许多高带宽Internet连接将受到16位值的限制)。
对于高RTT值,拥有非常大的RWIN会很有帮助。例如,如果您从马来西亚到美国的RTT路径约为200毫秒,则原始TCP RWIN会将您限制为2.6Mbps。
最大吞吐量= Rcv_Win / RTT
* 最大吞吐量= 65535 * 8 / 0.200 *
最大吞吐量= 2.6Mbps
RFC 1323定义了一些“ TCP选项”来克服这些限制。这些TCP选项之一是“窗口缩放”。它引入了比例因子,该因子乘以原始RWIN值,以获得完整的接收窗口值。使用窗口缩放选项时,最大RWIN为1073725440字节。应用相同的计算:
最大吞吐量= Rcv_Win / RTT
* 最大吞吐量= 1073725440 * 8 / 0.200 *
最大吞吐量= 42.96Gbps
请记住,只要数据包丢失不是问题,TCP就会在传输过程中逐渐增加RWIN 。要在高延迟的连接上看到非常大的传输速率,您必须传输一个大文件(因此TCP有时间增加窗口),而数据包丢失对于连接来说不是问题。
太平洋上的Internet电路有时会非常拥挤。我的一些家庭住在台湾,当我们与他们一起使用Google Talk时,我们经常遇到问题。当我从美国ping他们的DSL线路时,经常会看到超过0.5%的数据包丢失;如果您看到“速度较慢”的服务器损失了0.5%,那么很容易会限制单个TCP套接字的吞吐量。
仅供参考,一些速度测试网站使用并行TCP流来增加吞吐量;这可能会影响您看到的结果,因为如果路径中有一些数据包丢失,那么并行TCP流会大大提高吞吐量。我已经看到四个并行TCP流完全饱和了遭受1%恒定数据包丢失的5Mbps电缆调制解调器。通常,丢失1%会降低单个TCP流的吞吐量。
许多较早的OS实现都使用带有有限缓冲区的套接字。对于较旧的操作系统(例如Windows 2000),TCP是否允许传输大量数据都没有关系...它们的套接字缓冲区没有进行调整以利用大型RWIN。为了使TCP传输具有高性能,已经进行了大量研究。现代操作系统(为此,我们可以将Windows Vista和更高版本称为“现代”)在其套接字缓冲区实现中包含更好的缓冲区分配机制。
尽管已经有了很好的答案,但我想补充一下:不,速度不一定受距离影响,是的,速度经常受距离影响都是正确的。
这是为什么?
严格简化后,距离越长,通过Internet进行的“跳跃”越多。最大带宽由最慢的跃点和并发流量确定。随着距离的增加和跳跃速度的某种随机分布,使整体速度变慢的可能性越来越大。此外,物理方式会妨碍您,并且增加的延迟也可能会降低链接速度。
但这不是理所当然的。技术使我们能够建立几乎任何所需带宽的环绕地球的连接。但是,带宽和距离是敌人,并且两者都极大地增加了连接成本,再次使得仅为您现在可能需要的连接而存在的可能性较小。
当然,这过于简单了,但实际上,您经常会发现这种情况。再说一次,当连接出现了惊人的快速连接或分发代理时,您就不会再遇到这种情况,但是当一切瞬间发生时,我们很少考虑Internet的速度...