HTTP 2.0 - 一个TCP / IP连接与6个并行

时间:2017-07-01 18:44:31

标签: http http2

它表示HTTP 2优于HTTP 1的一个优点是HTTP2具有数据流。在一个TCP / IP连接中最多可以有256个不同的流。但是,在HTTP 1中,最多可以有6个并行连接。 HTTP 2允许从256个资源读取数据,这是一个改进,但我认为6个连接(在HTTP 1中)具有比一个TCP / IP连接(在HTTP 2中)更好的吞吐量。尽管如此,HTTP2被认为比HTTP 1更快。所以...我不理解的是什么?

1 个答案:

答案 0 :(得分:6)

6个物理连接的吞吐量高于一个物理连接,其他条件相同。

然而,同样的计算机之间的6个不同的TCP / IP连接并不适用,因为它们是虚拟连接(假设您没有两个网卡)。限制因素通常是您的互联网连接的延迟和带宽,而不是TCP / IP协议本身。

事实上,由于TCP连接的创建和处理方式,实际上更有效率来建立一个TCP / IP连接。这是因为初始连接的成本(三次TCP握手,HTTPS握手以及TCP连接使用一个名为Slow Start的进程慢慢将其容量建立到网络可以处理的最大速度这一事实)在持续保持连接的过程中(因为慢启动过程会定期再次发生,除非连接一直被充分利用 - 这种情况更可能发生在一个用于所有事情的连接上,而不是在您的请求时发生分为6个连接。)

此外,HTTP / 1.1一次只允许一个请求在飞行中,因此在返回响应之前无法使用连接(忽略在HTTP / 1.1中根本不支持的流水线操作)。这不仅限制了6个连接的有用性,而且还意味着连接未被充分利用的可能性更大,考虑到上述TCP中未充分利用的连接问题,这意味着它们可能会更慢节流后退,必须再次通过慢启动过程以建立最大容量。然而,HTTP / 2允许这256个流允许请求同时在飞行中。这比仅仅6个连接更好,并允许true multiplexing

如果你想了解更多,那么Ilya Grigorik写了一本关于这个主题的优秀书籍High Performance Browser Networking which is even available online for free