为什么要研究网速

在日常生活中,你有没有遇到过以下情况呢?

  • 想看盗版漫画,辛辛苦苦不辞辛劳地找到资源,却发现加载速度奇慢无比,阅读体验极差
  • 想在github上clone一个几MB的项目,输入一行git clone xxx.git,喝杯咖啡回来后,git居然仍在以挤牙膏般的速度传输
  • 想用ssh连接到境外远程主机,兴高采烈地在键盘上按下键,却迟迟不出现输出

以上情况都是我的亲身体验。我这个人有一点不好,那就是遇到不懂的事情,就一定要搞明白其中的道理。这些问题背后的道理是什么?恐怕和“网速”有着千丝万缕的联系。

什么是“网速”

“网速”这个词,似乎应该是 Network Speed 或者说 Network Rate. 但是,和这些术语不同,这里说的“网速”,其实是一个比较复杂和综合的概念,它描述的我们使用网络服务时的综合速度体验,包含这两个内容:

  • 比特率,考虑A主机的一个程序向B主机的一个程序发送一段连续信息。这里的比特率指这段信息的长度(以bit计)除以A程序发送信息到B程序收到信息的时间。
  • 网络延迟,一个包从源站发送到目的站接收需要的时间。

必须指出,这两个内容并不是正交的,而是有一定联系的。

我们将上节中所说的问题用这两个内容来规约一下,就是:

  • 看漫画问题 – 比特率太低
  • clone问题 – 比特率太低
  • ssh问题 – 延迟太高

很显然,这两个话题不是很好讨论的,它涉及到计算机网络的方方面面,我们也不打算一一讨论,现在确定了以下的内容:

  • 传输延迟与比特率的关系
  • 应用层对比特率的直观认识
  • 以太网的比特率
  • ISP接入的比特率与限速
  • 丢包与TCP
  • linux对TCP的实现
  • TCP性能调优
  • 实现自己的TCP
  • BBR

自问自答一下吧:

  • 为啥网络延迟不怎么研究?
    • 因为这主要和运营商有关,个人搞不出来太大名堂。
  • 这么多话题,要写多长时间呢?
    • 或许会写很长时间吧!但愿我能把这些坑都填上。