浏览器输入URL到展示经历的过程

110 阅读2分钟
  1. DNS 查询:浏览器首先需要将 URL 中的域名解析为对应的 IP 地址。它会检查本地 DNS 缓存,如果没有找到,则向 DNS 服务器发送查询请求。
  2. 建立 TCP 连接:浏览器使用获取到的 IP 地址与目标服务器建立 TCP 连接。这个过程包括三次握手:
    • 客户端发送 SYN 包到服务器。
    • 服务器收到 SYN 包后,发送 SYN + ACK 包到客户端。
    • 客户端收到 SYN + ACK 包后,发送 ACK 包到服务器,连接建立。
  3. 发送 HTTP 请求:浏览器通过建立的 TCP 连接向服务器发送 HTTP 请求。请求中包含请求方法(GET、POST 等)、请求头(包含浏览器信息、接受的内容类型等)和请求体(如果是 POST 请求)。
  4. 服务器处理请求:服务器接收到请求后,根据请求的 URL 和其他信息,查找对应的资源或执行相应的操作。如果请求的是静态资源(如 HTML、CSS、JavaScript 文件),服务器会直接返回这些资源。如果请求的是动态内容(如 PHP、Python 脚本生成的页面),服务器会执行相应的代码,并生成响应内容。
  5. 服务器发送 HTTP 响应:服务器处理完请求后,通过 TCP 连接向浏览器发送 HTTP 响应。响应中包含响应头(包含服务器信息、内容类型、长度等)和响应体(实际的内容,如 HTML 页面)。
  6. 浏览器接收并解析响应:浏览器接收到响应后,首先解析响应头,获取响应的状态码(如 200 表示成功,404 表示未找到资源等)和内容类型。然后根据内容类型解析响应体。
  7. 渲染页面:如果响应的内容类型是 HTML,浏览器会开始渲染页面。这个过程包括以下步骤:
    • 解析 HTML 文档,构建 DOM 树。
    • 加载并解析外部资源,如 CSS 和 JavaScript 文件。
    • 构建 CSSOM(CSS 对象模型)树。
    • 将 DOM 树和 CSSOM 树合并成渲染树(Render Tree)。
    • 根据渲染树进行布局(Layout),计算每个元素的位置和大小。
    • 绘制(Painting)页面,将每个元素绘制到屏幕上。
  8. 执行 JavaScript:如果页面中包含 JavaScript 代码,浏览器会在解析和渲染过程中执行这些代码。JavaScript 可以修改 DOM 树、CSSOM 树或与用户进行交互。
  9. 完成页面加载:当页面的所有资源都加载完成,并且所有 JavaScript 代码都执行完毕后,页面加载完成。此时,用户可以与页面进行交互。