Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

带宽、时延与吞吐量

复习

  • 操作系统总装:这一章不引入新概念,只让一个程序从磁盘完整跑起来
  • 尝试连接两台计算机:两台计算机通信的最小目标,是让一端的 0 和 1 在另一端被可靠区分
  • 信号与传输介质:比特可借助电、光或无线电波传播,介质各有取舍

TL;DR

  • 带宽描述链路理论上可承载的速率
  • 时延描述一个数据从一端到另一端所花的时间
  • 吞吐量是实际完成传输的速率,常低于带宽

正文

  “这条网线快不快?”我们平时习惯用一句“快”或“慢”来概括,可实际上,这里混着好几件不同的事。这一章就把它们拆开。

一口更宽的管道

  一条宽管道,可以在单位时间内送进更多的水。网络里的带宽(bandwidth)就是这个意思:单位时间内理论上最多能承载多少比特。

  但请注意“理论上”三个字。管道再宽,水从入口流到出口仍要花时间。数据也是一样,从一端到另一端所需的时间,叫时延(latency)。管道很宽,不代表第一滴水立刻到达;反过来,路程很短,也不代表能同时通过无限多辆车。

还差一个“实际”

  真实网络里,还有一个更贴近体验的量:吞吐量(throughput),也就是实际上每秒真正传完了多少数据。

  它常常低于带宽,因为协议要加头加尾、多个设备互相竞争、设备处理能力有限、出错还要重传。标称“100 Mbps”,并不等于你每次都能跑满 100 Mbps。

  有趣的是,不同场景对这三个量的敏感程度并不一样:

  • 下载大文件,更在意吞吐量,慢一点可以忍
  • 视频通话、远程操作,更在意时延,卡顿和延迟会立刻被察觉

  所以,以后再看到“100 Mbps”这类标称速率,别急着把它等同于所有场景里的实际体验。“快”是一个复合词,得先问清楚你说的是哪一种快。

  不过,就算链路足够快,还有一道坎:接收方得准确知道每个比特应在何时被读出。

思考题 1

为什么低时延链路不一定有高吞吐量?

思考题 2

带宽和吞吐量都能用“每秒多少比特”来衡量,它们最容易在什么情况下差别巨大?

小结

知识点

  • 带宽、时延和吞吐量描述不同维度的“快”
  • 吞吐量通常低于带宽,受开销、竞争、能力与重传影响
  • 网络体验取决于它们及其他开销的组合

参考资料

  1. Wikipedia(zh):带宽 (计算机):链路理论上的数据传输速率
  2. Wikipedia(zh):延迟 (工程):数据从一端到另一端所需的时间

思考题答案(仅供参考)

思考题 1

  链路可能距离很近、传播很快,却每秒只能承载很少的比特。反过来,一条又长又宽的链路,时延不低,吞吐量却可以很高。时延看的是“路上花多久”,吞吐量看的是“每秒过多少”,两者并不绑定。

思考题 2

  当链路拥塞、错误频繁,或协议开销很大时,两者差别最明显。此时物理带宽可能很大,但真正传完的数据很少,吞吐量远低于带宽。多台设备争抢同一条链路,也会让这个差距被放大。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪