测速原理:网速是怎么测出来的

打开页面点一下,几秒后跳出一串数字——这中间发生了什么? 这篇文章拆解现代 HTML5 测速引擎的完整工作流程。

01核心思想:吞吐量 = 数据量 ÷ 时间

所有测速的本质都是同一道算术题:在固定时间内传输尽可能多的数据,再用 数据量 ÷ 耗时得到速率。测速引擎并不「感知」带宽, 而是让线路跑到饱和,然后记录跑出了多少。

测速链路

你的设备 → 路由器 → 运营商网络 → 测速服务器。整条链路上最慢的一环决定测速结果, 所以 Wi-Fi 太差时,测出的是「你到路由器的速度」,而不是宽带的真实速度。

02下载测试:多线程并发 + 稳定突发均值

浏览器向测速服务器并发发起多个 HTTP 请求(通常 6 个,可配置 1–32)下载随机数据。 随机数据无法被压缩,保证测的是线路真实吞吐。引擎会丢弃起步阶段的「热身」数据, 取最稳定的突发平均值作为结果,避免单次抖动误导。

这也是为什么测速开始的 1–2 秒数字会「起飞」——TCP 慢启动还没结束,此时的读数并不可信。

03上传与延迟

上传测试反向操作:浏览器通过 POST 把随机数据推给服务器,统计单位时间 发送量。受上行带宽不对称影响,上传结果通常明显低于下载。

延迟(Ping)通过多次小请求往返采样,取中位数并计算波动幅度。 单次延迟没有意义——偶发的 200ms 尖峰可能是你手机刚好同步了相册。

04开销补偿因子

每个数据包除有效载荷外还携带 TCP/IP 协议头。引擎默认按约 4% 的开销 补偿因子修正结果,让读数更接近运营商承诺的带宽。不同测速站的补偿策略不同, 这是结果差异的来源之一。

05为什么不同测速网站结果不一样?

  • 节点位置不同:到同城节点和跨省节点的延迟、路由路径完全不同
  • 互联互通瓶颈:跨运营商访问(如联通 → 电信机房)常被限速
  • 并发策略不同:并发连接数、采样窗口、补偿因子各异
  • 测试时段:晚高峰共享链路拥堵,任何节点都跑不高

建议同一引擎多次测试取平均,横向对比才有意义。 CialloSpeed 的 OpenSpeedTest 引擎固定使用同一节点,多次结果可直接对比; 不同测速工具结果差异的原因,详见结果差异解读。

06专业术语表

Mbps(兆比特/秒)
带宽单位,运营商标称速度。8 Mbps = 1 MB/s。
MB/s(兆字节/秒)
下载软件常用单位,直观体现「每秒下多少文件」。
Ping / 延迟
数据包往返时间(ms),影响游戏与实时通话跟手感。
抖动 Jitter
多次延迟之间的波动幅度,抖动大时视频通话卡顿。
丢包
数据包在途中丢失的比例,哪怕 1% 也会明显劣化体验。
吞吐量
单位时间实际传输的数据量,测速测的就是它。

原理看懂了?来实测一下 用真实数据验证上面的一切

立即测速