一个 TCP 连接可以发多个 HTTP 请求,具体取决于使用的 HTTP 版本:
1. HTTP/1.0
- 每个请求独立:HTTP/1.0 默认使用非持久连接(每个请求都需要建立新的 TCP 连接)。因此,每个 HTTP 请求需要一个新的 TCP 连接。
2. HTTP/1.1
- 持久连接:HTTP/1.1 引入了持久连接(Connection: keep-alive),使得一个 TCP 连接可以发送多个 HTTP 请求和响应。在默认情况下,一个 TCP 连接可以支持多个 HTTP 请求,直到连接被关闭。
- 并发请求:HTTP/1.1 还支持管道化(pipelining),允许在等待响应的同时发送多个请求。但是,管道化有一些限制,如请求顺序和响应顺序。
3. HTTP/2
- 多路复用:HTTP/2 使用多路复用(multiplexing)技术,允许多个请求和响应在一个 TCP 连接上并发进行,而不会阻塞彼此。每个请求和响应通过流(stream)进行管理,可以有效地减少延迟和提高性能。
4. HTTP/3
- 基于 QUIC 协议:HTTP/3 使用 QUIC 协议,它在用户数据报协议(UDP)上实现了类似于 HTTP/2 的多路复用功能。它在一个连接上支持多个请求和响应,进一步优化了网络性能。