前端面试—输入一个url到生成页面的过程

105 阅读2分钟

1. DNS 解析:将域名解析成 IP 地址

2. TCP 连接:TCP 三次握手之后确定可以进行数据的传输

2.1 第一次握手: 客户端发送一个带有SYN(synchronize, 同步处理标志)的数据包到服务器端.

2.2 第二次握手: 服务器端收到数据包后, 回传一个带有ACK(acknowledgement, 确认标志)的数据包, 表示确认收到客户端第一次握手时发送的数据包.

2.3 第三次握手: 客户端再回传一个带有ACK标志的数据包, 表示握手结束.

3. 客户端发送 HTTP 请求(对应前端):构建HTTP请求报文并通过TCP协议发送到服务器指定端口

4. 服务器端处理请求并返回 HTTP 报文(对应后端):在固定的端口接收到TCP报文后,对HTTP协议进行解析,按照报文格式进一步封装成HTTP Request对象

5. 浏览器解析报文渲染页面:

5.1 解析HTML文件生成DOM树

5.2 解析CSS文件生成CSSOM(CSS Object Model)

5.3 将DOM树和CSS渲染树合并成一个渲染树

5.4 根据渲染树来布局(layout),计算每个节点的几何信息

5.5 将各个节点绘制(paint)在屏幕上

6. 断开连接:TCP 四次挥手

6.1 第一次挥手:客户端发送一个FIN(finish结束标志),用来关闭客户端与服务器端的数据传送。

6.2 第二次挥手:服务器端收到这个FIN,发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

6.3 第三次挥手:服务器端关闭与客户端的连接,发送一个FIN给客户端。

6.4 第四次挥手:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。