在 Ookla 的速度测试中——在他们的网站或应用程序上——用户可以在进行速度测试时选择单线程或多线程连接。
根据这个来源:
一些连接无法从单个连接达到全速,或者速度非常不稳定,而多个连接让我们可以更轻松地“填充”可用带宽。在较快的线路上尤其如此。
但是,在单线程连接和多线程连接之间进行选择时,连接速度是否不稳定有什么关系呢?这将如何影响速度测试的测试结果?
在 Ookla 的速度测试中——在他们的网站或应用程序上——用户可以在进行速度测试时选择单线程或多线程连接。
根据这个来源:
一些连接无法从单个连接达到全速,或者速度非常不稳定,而多个连接让我们可以更轻松地“填充”可用带宽。在较快的线路上尤其如此。
但是,在单线程连接和多线程连接之间进行选择时,连接速度是否不稳定有什么关系呢?这将如何影响速度测试的测试结果?
为了回答这个问题,必须了解 TCP/IP 连接是如何建立的。
数据不只是像人们想象的那样连续发送。还有一个控制机制可以知道数据是否真的通过了。
为了实现这一点,通信过程如下:服务器以块的形式发送数据,客户端通过回复接收到的数据量来确认数据。
为了让服务器知道它可以发送多少数据,它将按如下方式发送数据:首先发送 1 个字节的数据,客户端回复:1. 然后发送 2 个字节,客户端回复:2 然后发送 4 个字节,然后是 8,然后是 16,然后是 32,数据量呈指数增长。
当线路不稳定时,客户端可能无法接收到所有数据,从而回复错误的号码。
例如,服务器发送了 4096 字节的数据,但客户端收到了 3165 字节。服务器知道出现问题,将忽略上次传输,并开始重新发送最后的 4096 字节。但不是再次发送全部 4096,而是开始发送 1,然后是 2,然后是 4,然后是 8,等等......
服务器还测量发送和接收每个数据块需要多长时间,当服务器注意到收到回复需要相当长的时间时,即使返回了正确的数据量,它也知道已达到速度限制,并将继续发送该数量的数据,而不是更高。这种策略导致最优化的数据传输。
如果一个连接不稳定,但只建立了一个连接,那么数据量将会更高,因为一个 1 兆位的连接将比多个同时超过 1 兆位的连接拥有更多的数据。如果同时有 4 个连接,则每个块的大小为 1/4 兆位。较小的 chun 大小意味着不稳定的连接不太可能出现问题,并且鉴于不稳定的连接会将传输速率重置为 0 以便重试,如果重置 4 个连接中的 1 个,其余 3 个保持全速并甚至可能会增加一点来补偿。
鉴于如今当您连接到 Internet 上的服务器时,您几乎总是使用多个连接进行连接,如果 speedtest 只连接一个连接,那么与实际结果相比,不稳定的连接将无法显示正确的数据。
请记住,在互联网速度快的情况下,这些速度重置发生得如此之快,以至于您看不到所表示的图表一直下降到 0,除非系列中有大量数据损坏,因此速度会下降到非常低的速度.
所以 TL;DR:不稳定的连接会导致这样一种情况,如果返回不正确的接收字节,连接速度会被重置,这会在速度测试中产生非常失真的图像。