前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器HTTP请求并发数和TCP连接的关系

浏览器HTTP请求并发数和TCP连接的关系

作者头像
用户1462769
发布2019-10-09 15:53:08
9.5K1
发布2019-10-09 15:53:08
举报
文章被收录于专栏:全栈者

面试题目(头条):

  1. 网页中的图片资源为什么分放在不同的域名下?
  2. 浏览器与服务器建立一个TCP连接后,是否会在完成一个http请求后断开?什么条件下会断开?
  3. 一个TCP连接可以同时发送几个HTTP请求?
  4. 浏览器http请求的并发性是如何体现的?并发请求的数量有没有限制?

答案解析:

第一个问题:

网页中的图片资源为什么分放在不同的域名下?

浏览器对并发请求的数目限制是针对域名的,即针对同一域名(包括二级域名)在同一时间支持的并发请求数量的限制。如果请求数目超出限制,则会阻塞。因此,网站中对一些静态资源,使用不同的一级域名,可以提升浏览器并行请求的数目,加速界面资源的获取速度。

第二个问题

浏览器与服务器建立一个TCP连接后,是否会在完成一个http请求后断开?什么条件下会断开?

HTTP/1.0中,一个http请求收到服务器响应后,会断开对应的TCP连接。这样每次请求,都需要重新建立TCP连接,这样一直重复建立和断开的过程,比较耗时。所以为了充分利用TCP连接,可以设置头字段Connection: keep-alive,这样http请求完成后,就不会断开当前的TCP连接,后续的http请求可以使用当前TCP连接进行通信。

第一次访问有初始化连接和SSL开销

初始化连接和SSL开销消失了,说明使用的是同一个TCP连接。

HTTP/1.1Connection写入了标准,默认值为keep-alive。除非强制设置为Connection: close,才会在请求后断开TCP连接。

所以这一题的答案就是:默认情况下建立的TCP连接不会断开,只有在请求头中设置Connection: close才会在请求后关闭TCP连接。

第三个问题

一个TCP连接可以同时发送几个HTTP请求?

HTTP/1.1中,单个TCP连接,在同一时间只能处理一个http请求,虽然存在Pipelining技术支持多个请求同时发送,但由于实践中存在很多问题无法解决,所以浏览器默认是关闭,所以可以认为是不支持同时多个请求。

HTTP2提供了多路传输功能,多个http请求,可以同时在同一个TCP连接中进行传输。

第四个问题

浏览器http请求的并发性是如何体现的?并发请求的数量有没有限制?

页面资源请求时,浏览器会同时和服务器建立多个TCP连接,在同一个TCP连接上顺序处理多个HTTP请求。所以浏览器的并发性就体现在可以建立多个TCP连接,来支持多个http同时请求。

Chrome浏览器最多允许对同一个域名Host建立6个TCP连接,不同的浏览器有所区别。

补充

如果图片都是HTTPS的连接,并且在同一域名下,浏览器会先和服务器协商使用HTTP2Multiplexing功能进行多路传输,不过未必所有的挂在这个域名下的资源都会使用同一个TCP连接。如果用不了HTTPS或者HTTP2(HTTP2是在HTTPS上实现的),那么浏览器会就在同一个host建立多个TCP连接,每一个TCP连接进行顺序请求资源。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试题目(头条):
  • 答案解析:
  • 补充
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档