HTTP 在持久连接还是非持久连接上工作?

HTTP 在持久连接还是非持久连接上工作?

我在读黑濑的“计算机网络——自上而下的方法”,并解释了非持久连接的 HTTP 和持久连接的 HTTP 之间的区别。

在深入讨论细节之前,他们说

尽管 HTTP 在默认模式下使用持久连接,但可以配置 HTTP 客户端和服务器以使用非持久连接。

据我所知,使用的是持久连接。但在非持久部分,他们说

在默认模式下,大多数浏览器会打开 5 到 10 个并行 TCP 连接,每个连接处理一个请求-响应事务。

另一方面,在持久部分他们说:

通常,HTTP 服务器会在一定时间内(可配置的超时间隔)未使用连接时关闭连接。当服务器收到连续请求时,它会连续发送对象。HTTP 的默认模式使用流水线持久连接。最近,HTTP/2 [RFC 7540] 以 HTTP 1.1 为基础,允许在同一连接中交错多个请求和答复,并在此连接内建立一种优先处理 HTTP 消息请求和答复的机制。

我很困惑。我能看到的唯一可行的方法是:尽管浏览器可能会打开多个连接并因此并行接收数据,但每个连接都是持久的。这有意义吗?还是我遗漏了/误解了什么?

提前致谢!

答案1

Mozilla 有关 HTTP 协议的页面非常准确。连接头解释如何处理连接。

在HTTP/1.0中,响应发送后默认关闭连接。

在 HTTP/1.1 中,连接默认是持久的。

浏览器使用 HTTP/1.1 打开多个连接,否则服务器一次只能发送一个文件,从而导致显示完整页面的延迟。这种方法的缺点是额外的 TCP 握手和慢启动机制,这会限制吞吐量。

HTTP/2 通过引入多路复用连接对此进行了改进,从而消除了额外的 TCP 握手和慢启动对吞吐量的影响。

连接持久性和多个请求彼此独立。

浏览器也可以做不同的事情。

相关内容