浏览器从输入URL到这个页面完全呈现的过程,发生了什么? (附带TCP三次握手解释)

这可真是个面试常考题

1、DNS解析

根据url的域名去查找对应的ip地址,查找顺序为:浏览器缓存 — 系统缓存 — 路由缓存 — 系统的hosts文件 — DNS服务器。

2、TCP连接和发送HTTP请求

根据查到ip地址和url中的端口号,以及请求的相关信息(请求方法、参数等),构造一个http请求,并将这个请求通过TCP连接发送到服务器。

3、服务器处理请求并返回HTTP报文

服务器接收请求之后,对请求进行处理,并作出响应,返回对应的html数据。

4、浏览器接收数据并解析渲染页面

浏览器接收到服务器响应的html数据,对其进行解析,先后构建DOM树和CSSOM树。在构建DOM树时,如果遇到 JS 代码,则暂停构建DOM树,先去执行 JS,执行结束之后,再继续构建DOM树 。完成后再将两者合并成一棵渲染树,开始布局和渲染页面。在渲染页面时,如果遇到了图片、视频等外部资源,则会并行下载这些资源(浏览器对每个域的并行下载数量有限制,一般为4-6个)。

5、页面渲染完成,结束连接

页面已完全呈现,结束与服务器的连接。

知识补充:

TCP建立连接的三次握手

第一次握手: 发送端先发送一个带有SYN(synchronize)标志的数据包给接收端,请求建立连接,并在一定的延迟时间内等待接收的回复。如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。

第二次握手: 接收端收到数据包后,传回一个带有SYN/ACK标志的数据包,确认自己收到了发送端的请求,并等待发送端确认是否收到接收端的回应。

第三次握手: 发送端收到数据包后再发送一个带有ACK标志的数据包给接收端,确认收到了接收端的回应。接收端接收数据包并确认后,则连接建立成功,可以开始传输数据了。

注:TCP断开连接需要四次挥手,暂时就不详细解释了。

浏览器从输入URL到这个页面完全呈现的过程,发生了什么? (附带TCP三次握手解释)_第1张图片

你可能感兴趣的:(面试知识点,前端,tcp/ip,网络协议)