前端面试宝典

从浏览器输入URL到页面显示:完整流程详解

这是前端/后端/网络面试最经典的题目,我把整个流程拆分成8个核心步骤,用最清晰、好记、能直接背的方式讲给你,面试/工作都能用


整体流程总览

  1. DNS域名解析(把域名 → IP地址)
  2. 建立TCP连接(三次握手)
  3. 发起HTTPS/HTTP请求
  4. 服务器处理请求并返回响应
  5. 浏览器接收响应数据
  6. 解析HTML构建DOM树
  7. 渲染页面(布局 → 绘制 → 合成)
  8. 关闭TCP连接(四次挥手)

逐步骤详细说明

1. URL解析与检查

浏览器先处理你输入的地址:

  • 判断是URL还是搜索关键词
  • 补全协议(默认 http/https
  • 解析出:协议、域名、端口、路径、参数

例:https://www.baidu.com/index


2. DNS 域名解析(核心:域名 → IP)

浏览器不知道 baidu.com 在哪,必须转成IP地址才能通信。

查询顺序:

  1. 浏览器缓存(之前访问过直接用)
  2. 系统缓存(hosts文件)
  3. 路由器缓存
  4. ISP DNS 服务器(运营商)
  5. 根域名服务器 → 顶级域名服务器 → 权威域名服务器

最终得到:服务器的公网IP


3. 建立 TCP 连接(三次握手)

拿到IP后,浏览器和服务器建立可靠连接

  1. 客户端:我可以发数据吗?
  2. 服务器:可以,你能收吗?
  3. 客户端:我能收,开始通信!

✅ 目的:保证双方收发都正常,避免丢包。


4. HTTPS 加密握手(如果是HTTPS)

HTTPS = HTTP + TLS/SSL 加密

  • 交换证书
  • 验证服务器身份
  • 生成会话密钥
  • 后续所有数据加密传输

5. 浏览器发送 HTTP 请求

请求包含:

  • 请求行(方法GET/POST、URL、协议)
  • 请求头(Cookie、User-Agent、缓存等)
  • 请求体(POST才有)

服务器收到后开始处理。


6. 服务器处理并返回响应

服务器(Nginx/Node/Java/Python等):

  • 路由匹配
  • 读取静态资源/查询数据库
  • 生成响应内容(HTML/CSS/JS/JSON)
  • 返回状态码:200成功、304缓存、404找不到等

响应包含:

  • 响应头
  • 响应体(网页内容)

7. 浏览器解析与渲染(最关键)

浏览器拿到HTML后开始渲染页面

① 解析HTML → 生成 DOM 树

② 解析CSS → 生成 CSSOM 树

③ DOM + CSSOM → 生成 渲染树(Render Tree)

④ 布局(Layout/Reflow)

计算每个元素的位置、大小

⑤ 绘制(Paint)

填充颜色、图片、文字、边框

⑥ 合成(Composite)

把多层绘制结果合并显示


8. 执行 JavaScript

JS会阻塞解析和渲染

  • CSS 也会阻塞 JS 执行
  • 所以建议:
    • CSS放头部
    • JS放底部 / 加 async/defer

9. 关闭 TCP 连接(四次挥手)

数据传输完成后断开连接:

  1. 客户端:我发完了
  2. 服务器:收到,我再检查下
  3. 服务器:我也发完了
  4. 客户端:收到,关闭

超简版记忆口诀(面试专用)

DNS → 三次握手 → HTTPS → 请求 → 响应 → 解析HTML → 渲染 → 四次挥手


总结

  1. 整个过程分为网络通信浏览器渲染两大阶段
  2. DNS负责找服务器,TCP保证可靠传输,HTTPS保证安全
  3. 浏览器核心工作:解析 → 布局 → 绘制 → 合成