当我在Chrome中打开一个网站页面时,为什么与服务器有多个TCP连接?

时间:2018-10-10 02:46:42

标签: spring-boot tcp

该网站在SpringBoot中开发,并部署在Linux服务器中。当我在Chrome中打开一个网站页面并打开TCP Viewer时,我发现从我的计算机到服务器有多个TCP连接。他们使用的端口完全不同。

enter image description here

然后检查Chrome DevTool中的“网络”标签,我发现requst标头中有Keep-Alive。我猜它正在使用Http 1.1和长连接。

所以这让我感到困惑。由于是长连接,因此所有内容都应通过一个TCP连接,为什么会有那么多TCP连接?

1 个答案:

答案 0 :(得分:1)

尽管HTTP / 1.0和HTTP / 1.1支持持久连接,其中在同一个TCP连接中处理多个HTTP请求,但这些请求仍在同一个连接中相互处理。如果站点需要大量资源,则使用单个TCP连接进行的顺序加载将太慢。这样就完成了使用多个TCP连接的并行加载。由于大多数站点都加载许多资源(主要HTML,各种CSS,JavaScript,图像,字体...),因此大多数站点都使用多个TCP连接。

通过HTTP / 2,可以在单个TCP连接中并行加载。在这种情况下,通常只能看到到站点的单个TCP连接。当然,如果资源是从多个站点(例如广告,跟踪...)加载的,则一个站点还会再次看到多个TCP连接-但是如果将HTTP / 2用作特定目标,则每个目标只能看到一个TCP连接。