目录

🍎 输入 URL 回车后发生的事情

相关问题:

  • 说说在浏览器中输入 URL 后敲下回车之后,发生的事情?

# 简单分析

输入 URL 到回车后发生的行为:

  • URL 解析;
  • DNS 查询;
  • TCP 连接;
  • HTTP 请求;
  • 响应请求;
  • 页面渲染。

# 完整分析

# URL 解析

首先判断输入的是一个 ** 合法的 URL ** 还是 搜索关键次,根据输入的内容进行对应的操作。

  • 根据 URL 找到这个 URL 域名的服务器 IP;为了寻找这个 IP,浏览器首先会寻找缓存,查看缓存中是否有记录,缓存的查找记录顺序为:浏览器缓存、系统缓存、路由器缓存。

# DNS 查询

在缓存中没有查找到则查询 DNS 服务器,最终查找获得服务器的 IP 地址。

# TCP 连接 / 发送 HTTP 请求

浏览器根据这个 IP 地址以及相应的端口号,构造一个 HTTP 请求,这个请求报文会包括这次请求的信息:请求方法、请求说明、请求附带的数据,并将这个 HTTP 请求封装在一个 TCP 包中。

这个 TCP 包会依次经过 传输层、网络层、数据链路层、物理层到达服务器,服务器解析这个请求来做出响应。

# 响应请求

服务器接收到浏览器的请求后,就会进行逻辑操作,处理完成之后返回一个 HTTP 响应消息:包括响应行、响应头、响应正文。

服务器响应之后,由于现在 HTTP 默认开始长连接 Keep-alive ,当前页面关闭之后,TCP 连接会经过四次挥手完成断开。

# 页面渲染

浏览器接收到服务器响应的资源后,首先会对资源进行解析:

  • 响应头解析:根据不同的响应头参数做出对应的处理,例如重定向、存储 Cookie、解压 gzip、缓存资源等。
  • 查看响应头的 Content-Type :根据不同的资源类型采用不同的解析方式。

页面渲染的过程

  • 解析 HTML 文档,构建 DOM 树;

    浏览器接收到来自服务器的 HTML 文档之后,会遍历文档节点,生成 DOM 树,解析 CSS 文件 生成 CSS 规则树。

  • 解析 CSS ,生成 CSS 规则树;

  • 合并 DOM 树和 CSS 树,生成 render 树;

  • 布局 render 树(layout /reflow),负责各元素尺寸、位置的计算;

  • 绘制 render 树(paint),绘制页面像素信息;

  • 浏览器将各层的信息发送给 GPU,GPU 将各层合成,显示在屏幕上。

📢 上次更新: 2022/09/02, 10:18:16