【问题标题】:Why are there multiple TCP connections to the server when I open one website page in my Chrome?当我在 Chrome 中打开一个网站页面时,为什么会有多个 TCP 连接到服务器?
【发布时间】:2021-04-15 05:27:50
【问题描述】:

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

我检查了 Chrome DevTool 中的网络选项卡,我看到请求标头中有 Keep-Alive。我猜它使用的是 Http 1.1 和长连接。

所以这让我很困惑。既然是长连接,所有的内容都应该通过一个TCP连接,为什么会有这么多的TCP连接?

【问题讨论】:

标签: spring-boot tcp


【解决方案1】:

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

在单个 TCP 连接中支持 HTTP/2 并行加载。在这种情况下,通常只会看到一个到站点的 TCP 连接。当然,如果从多个站点加载资源(即广告、跟踪...),也会再次看到多个 TCP 连接 - 但如果 HTTP/2 用于特定目标,则每个目标只有一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2018-12-14
    • 2019-03-15
    • 1970-01-01
    相关资源
    最近更新 更多