HTTP1.1的并发到底是怎么回事?

阅读 6.9k
1 个回答

层级不一样。HTTP 应用层,TCP 是传输层。

HTTP/1.0 里,每一次 HTTP 请求,就要建立一个 TCP 链接。而 TCP 的建立开销很大。

为了解决这个问题,HTTP/1.1 引入了 Keep-Alive,可以一个 TCP 链接上发送多个 HTTP 请求,但这个协议模型本身还是在 HTTP/1.0 上修修补补,缺点还是有的,也就是同一个 TCP 链接上,多个 HTTP 请求彼此间是阻塞的,也就是请求 A 先得到响应后,请求 B 才会开始发送。

那能不能一个 TCP 链接既可以发送多个 HTTP 请求、每个 HTTP 请求之间彼此还不阻塞呢?HTTP/2.0 应用而生,引入 Stream,解决了这个问题。

你发的第二个链接里的流程图里对上面“阻塞”和“不阻塞”的对比已经画的很明白了。

HTTP 的并发限制,是浏览器做的(防止一个网页引入了巨多的资源、全都同时开启下载导致系统资源被迅速耗尽),如果不是浏览器、自己写 HTTP 客户端,是没这个限制的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进