经典问题 一个网址输入到返回页面的全过程

 一个网址输入到返回页面的全过程

主要是这八步:

1、浏览器输入网址,根据域名,进行DNS域名解析

2、拿到解析分IP地址,跟服务器简历TCP连接

3、向IP地址发送HTTP请求

4、服务器处理请求

5、服务器返回响应结果,指定URL数据,错误信息,如果被重定向,则重定到新的 URL地址

6、(关闭TCP连接)

7、浏览器解析下载的源文件

8、解析排版页面,在浏览器中显示基础页面,布局渲染

1、一个 TCP 连接可以对应几个 HTTP 请求?

(HTTP1.0和1.1的区别)

默认情况下建立TCP连接不会断开,只有在请求头中声明connection:close,才会在请求后关闭

(HTTP1.0前浏览器支持,HTTP1.1后标准默认开启:connection:keep-live)

1.1、一个TCP连接可以对应几个HTTP请求

如果维持连接,一个TCP连接可以发送多个HTTP请求

1.2、为什么有时刷新页面,不需要重新建立SSL连接

TCP连接有时候会被浏览器和服务端维持一段时间

2、一个 TCP 连接中 HTTP 请求发送可以一起发送么

(HTTP2.0和HTTP1.1协议的区别)

在HTTP1.1存在Pipelining技术可以完成多个请求同时发送,但是浏览器默认关闭,所以可以认为是不可行的

提高页面效率的办法

  • 维持和服务器已经建立的TCP连接,在同一连接上顺序处理多个请求
  • 和服务器建立多个TCP连接

在HTTP2中由于Multiplexing特点的存在,多个HTTP请求可以在同一TCP连接中并行.

3、浏览器对同一Host建立TCP连接到数量有没有限制?

有限制,Chrome最多允许对同一个Host建立6个TCP连接,不同浏览器有区别

收到的HTML如果包含几十个图片标签,这些图片是以什么方式,什么顺序建立多少连接,使用什么协议被下载下来?

如果图片都是以HTTPS连接并且在同一个域名下,那么浏览器在SSL握手后会和服务器请求用HTTPS

如果能,使用Multiplexing功能在连接上进行多路传输。未必会所有挂在这个域名的资源都使用一个TCP去获取。但是可以确定的是Multiplexing可能会被用到

如果用不了HTTP2或用不了HTTPS,那浏览器就会在一个HOST上建立多个TCP连接,数量最大限制取决于浏览器设置。这些连接会在空闲时被浏览器用来发送新的请求,如果所有连接正在发送请求,就只能等。

原文地址:https://www.cnblogs.com/hereisdavid/p/13899965.html