面试题:从输入URL到浏览器显示页面的过程中都发生了什么?

用户在浏览器中输入一个 url 或直接点开一个 url 后,就可以看到网页内容了。虽然可以直接显示,但在这背后却经过了非常复杂的操作,主要有五大过程:

1. 浏览器根据域名找到对应的 ip 地址(远程服务器)

        ip 指的是网络为每一台电脑分配的一个地址。由于 ip 地址不容易被记住,所以有了域名,浏览器拿到域名后,首先要先把域名解析成 ip,然后找到 ip 对应的机器。解析域名通常使用的方法是 DNS 解析,为了让查找过程更高效,浏览器和操作系统都会将每次的解析结果缓存起来,在下次解析的时候,就会先从缓存中去查找 ip(解析方式:查找本地缓存中 ——> DNS数据缓存中 ——> DNS解析对应ip)。

2. 浏览器与远程服务器建立连接(tcp连接 三次握手)

找到对应的 ip 后,就要建立 TCP 连接了,只有连接成功,双方才可以发送数据。连接分为三次,分别是浏览器向服务器端发送 SYN 请求;服务器接收到请求后,会向浏览器端发送 SYN/ACK 数据包进行确认信息;最后浏览器会向服务器端传入 ACK 数据包来表示可以通信了。

3. 浏览器与远程服务器发送和接收数据

建立连接后,浏览器和服务器就可以进行通信了。浏览器通过向服务器发送 http 请求,从而获得响应数据。这其中的过程包含了:请求报文(请求行、请求头、主体)、响应报文(状态行、响应头、响应正文)。

4. 浏览器与远程服务器断开连接(tcp断开 四次挥手)

两端通信结束之后,为了不浪费系统资源,就需要考虑断开连接了。TCP 的断开分为四次,因为在浏览器向服务器端发出可以断开连接信息的时候,服务器可能还存在一些数据没有传输完成,这时服务器需要去确认一下数据是否全都传输完成,如果全都完成了,服务器才会告诉浏览器可以断开了。

5. 浏览器渲染

1)构建 DOM 树:渲染进程将 HTML 内容转换为能够读懂的 DOM 树结构;

2)样式计算:渲染引擎将 CSS 样式表转化为浏览器可以理解的 styleSheets,计算出 DOM 节点的样式;

3)布局阶段:创建布局树,并计算元素的布局信息;(排除script、meta等功能化和非视觉节点)

4)分层:对布局树进行分层,并生成分层树;(生成图层树,因为有不同的层级要求)

5)栅格化:合并线程将图层分图块,并栅格化将图块转换成位图;(视图进行分割)

6)显示:合并线程发送绘制图块命令给浏览器进程。浏览器进程根据指令生成页面,并显示在页面;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值