假设我从 Web 浏览器向 Web 服务器发出了两个请求。我在收到第一个请求的响应之前发送了第二个请求。我知道后一个请求的响应会呈现在我的浏览器上。但是第一个响应会发生什么?浏览器如何知道哪个响应是新的?
答案1
浏览器使用 HTTP 进行通信,相关标准定义了如何传输请求和响应。
对于 HTTP/1,对于新请求,可能会使用新的 TCP 连接,在这种情况下,响应也应在该连接中进行。或者,可能会使用现有的 TCP 连接发送请求,在该连接上所有先前请求的响应都到达后,才会出现响应(它们具有明确定义的大小,因此响应的结束是已知的)。
对于 HTTP/2,情况会更加复杂,因为多个请求和多个响应在 TCP 连接中交错。但 HTTP/2 中定义的帧明确定义了这些消息帧各自属于哪个请求/响应,因此它们可以在最后重新组装,并将响应分配给相关请求。