2017-07-01 33 views
0

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

+0

为什么你认为6个连接的吞吐量比一个好? – tkausl

+0

,因为如果我假设所有连接的步距相等,那么6个连接在同一时间传递比一个连接更多的信息。 – CrazySynthax

+0

尽管它们可能并行,但每个连接都有其开销,而不是http/2 –

回答

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个连接都好,并允许true multiplexing

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