前不久,我们讨论过了长连接的一个好处。我们提到复用TCP链接可以减少3次TCP握手的时间,事实并不止于此。
这要从TCP的慢启动说起。
左边蓝色部分称之为TCP的慢启动,通俗上来讲,TCP慢启动就是无论你的带宽有多大,传输数据的时候都是从一个较小的值,然后进行翻倍变大。(日常生活中如果你在下载一个东西,暂停后再重新开始,会看到下载速度慢慢变大。)
这样做的好处是,为了避免网络拥堵。例如你在家看游戏直播,你女朋友突然下载东西(程序员哪有女朋友。)。如果没有TCP慢启动,那么两边在那么一瞬间就会形成非常大的网络竞争,数据会在某个网关越积越多,导致分组被删除重试,造成网络速度的下降。
如图所示,假如一开始TCP的拥塞窗口为4(大概5.7kb,新的协议支持窗初始窗口为10),我们传输一个20k的文件,那么需要传输3次。
如果我们使用HTTP短链接的话,那么我们再传输一个20k的文件,要重新经历这么一个漫长的过程。但是,如果我们使用HTTP长链接的话,就可以复用这一个TCP链接,我们再传输一个文件只要先前的一个零头。