什么时候http2 TCP连接关闭?

时间:2018-01-05 04:29:54

标签: web tcp http2

据我所知,http2使用一个tcp连接来提供多个请求,例如,如果我请求包含a.css和a.js的index.html,这三个请求将在一个tcp连接中完成。

如果用户点击index2.html会怎样?此请求是否仍在同一个以前的tcp连接中?如果是这样,浏览器将保持连接打开,直到用户关闭浏览器?在服务器端,服务器必须始终保持许多连接打开?

1 个答案:

答案 0 :(得分:9)

使用HTTP / 2时,浏览器通常每个域只打开一个连接。

在您的示例中,index2.html将在用于index.htmla.cssa.js的相同TCP连接上发送。

在HTTP / 2中,请求在同一TCP连接上复用,以便浏览器可以同时发送它们,而无需等待先前的请求被响应。

两个浏览器和服务器都有TCP连接的空闲超时。 如果连接空闲的时间足够长,它将被任何一方关闭 - 具有较短空闲超时的一方,以节省资源。 例如,您可以打开与wikipedia.org的连接,执行一些请求,然后离开该选项卡并处理其他内容。 一段时间后(通常为30秒),浏览器将关闭与wikipedia.org的TCP连接。

在服务器端,服务器将保持各个客户端的连接打开,直到它们被客户端关闭或者直到服务器端空闲超时触发为止,此时服务器启动了关闭TCP连接。

使用HTTP / 2,服务器必须维护的连接数远远少于HTTP / 1.1。 使用HTTP / 2,服务器必须为每个客户端维护1个TCP连接;使用HTTP / 1.1,服务器必须每个客户端通常维护2-8个TCP连接。