从输入 URL 到页面展示

111 阅读3分钟

从输入 URL 到页面展示的过程涉及多个步骤和技术细节。整个过程可以分为以下几个主要阶段:

  1. DNS 解析
  2. 建立 TCP 连接
  3. 发送 HTTP 请求
  4. 接收 HTTP 响应
  5. 解析 HTML
  6. 请求资源
  7. 渲染页面

下面详细说明每个阶段的过程:

1. DNS 解析

当你在浏览器中输入一个 URL(例如 https://www.example.com)时,浏览器需要知道该域名对应的 IP 地址。这个过程称为 DNS 解析。

  • 查询缓存:浏览器首先检查本地 DNS 缓存,看是否有该域名对应的 IP 地址记录。
  • 操作系统缓存:如果没有找到,浏览器会查询操作系统的 DNS 缓存。
  • ISP 缓存:如果仍然没有找到,浏览器会查询 ISP(Internet Service Provider)的 DNS 缓存。
  • 递归查询:如果以上都没有找到,浏览器会向根域名服务器发起递归查询,逐步获取到该域名对应的 IP 地址。

2. 建立 TCP 连接

一旦获取到 IP 地址,浏览器需要与服务器建立 TCP 连接。

  • 三次握手:浏览器发送一个 SYN 包给服务器,服务器回应一个 SYN-ACK 包,浏览器再发送一个 ACK 包确认连接建立。
  • 连接建立:TCP 连接建立后,浏览器和服务器之间就可以开始传输数据。

3. 发送 HTTP 请求

TCP 连接建立后,浏览器发送 HTTP 请求到服务器。

  • 请求行:包括请求方法(GET、POST 等)、请求 URL 和协议版本(HTTP/1.1、HTTP/2 等)。
  • 请求头:包括各种元信息,如 User-AgentAcceptContent-Type 等。
  • 请求体:如果是 POST 请求,可能包含请求体数据。

4. 接收 HTTP 响应

服务器处理完请求后,返回 HTTP 响应给浏览器。

  • 状态行:包括状态码(200、404、500 等)和协议版本。
  • 响应头:包括各种元信息,如 Content-TypeContent-Length 等。
  • 响应体:包含实际的响应数据,通常是 HTML 文档。

5. 解析 HTML

浏览器接收到 HTML 文档后,开始解析并构建 DOM 树。

  • 解析器:浏览器的解析器逐行读取 HTML 文档,构建 DOM 树。
  • 事件流:解析过程中,浏览器会不断更新 DOM 树,并尝试渲染页面。

6. 请求资源

HTML 文档中可能包含各种资源,如 CSS、JavaScript、图片等。浏览器会根据需要请求这些资源。

  • 解析 CSS:浏览器解析 CSS 文件,构建 CSSOM(CSS Object Model)。
  • 解析 JavaScript:浏览器解析 JavaScript 文件,执行其中的代码。
  • 请求图片和其他资源:浏览器根据 HTML 中的引用,请求图片和其他资源。

7. 渲染页面

浏览器将 DOM 树和 CSSOM 结合起来,生成渲染树,并最终渲染页面。

  • 布局:浏览器计算每个元素的位置和大小。
  • 绘制:浏览器将每个元素绘制到屏幕上。
  • 重绘和重排:如果页面发生变化,浏览器会重新计算布局并重新绘制。

总结

从输入 URL 到页面展示的过程涉及多个步骤:

  1. DNS 解析:获取域名对应的 IP 地址。
  2. 建立 TCP 连接:通过三次握手建立 TCP 连接。
  3. 发送 HTTP 请求:浏览器发送 HTTP 请求到服务器。
  4. 接收 HTTP 响应:服务器返回 HTTP 响应。
  5. 解析 HTML:浏览器解析 HTML 文档,构建 DOM 树。
  6. 请求资源:浏览器请求 CSS、JavaScript、图片等资源。
  7. 渲染页面:浏览器生成渲染树并最终渲染页面。

理解这一系列过程有助于更好地优化网页性能和用户体验。