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



它说HTTP 2相对于HTTP 1的优势之一是HTTP2具有数据流。在一个TCP/IP连接中最多可以有256个不同的流。但是,在 HTTP 1 中最多可以有 6 个并行连接。HTTP 2 允许从 256 个资源读取数据是一项改进,但我仍然认为 6 个连接(在 HTTP 1 中(比一个 TCP/IP 连接(在 HTTP 2 中(具有更好的吞吐量。尽管如此,HTTP2被认为比HTTP 1更快。所以。。。我理解不正确的地方是什么?

在其他条件相同的情况下,6 个物理连接的吞吐量将比一个物理连接更大。

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

事实上,由于创建和处理TCP连接的方式,拥有一个TCP/IP连接实际上更有效。这是因为初始连接的成本(三向TCP握手,HTTPS握手以及TCP连接使用称为慢启动的过程来缓慢地将其容量构建到网络可以处理的最大速度(以及连接的持续维护(因为慢启动过程会定期再次发生,除非连接始终得到充分利用 - 这要多得多可能发生在一个用于所有事情的连接上,而不是当您的请求被拆分到 6 个连接时发生(。

此外,HTTP/1.1一次只允许一个请求在传输中,因此在返回响应之前无法使用连接(忽略HTTP/1.1中根本不支持的流水线(。这不仅限制了 6 个连接的有用性,而且还意味着连接更有可能未充分利用,考虑到上面提到的 TCP 中未充分利用的连接问题,这意味着它们可能会变慢,因为它们会节流并必须再次经历慢启动过程才能建立最大容量。但是,HTTP/2 允许这 256 个流允许请求同时运行。这比只有 6 个连接更好,并且允许真正的多路复用。

如果你想了解更多,那么Ilya Grigorik写了一本关于这个主题的好书,叫做高性能浏览器网络,甚至可以在网上免费获得。

最新更新