整体流程可分为几个阶段:

  1. URL 解析与补全:浏览器判断输入是 URL 还是搜索词,补全协议。
  2. DNS 解析:查浏览器缓存 → 系统缓存 → hosts → 递归查询 DNS 服务器,得到 IP。
  3. 建立连接:TCP 三次握手(HTTPS 还有 TLS 握手,验证证书、协商密钥)。
  4. 发送 HTTP 请求:带 Cookie、缓存协商头等;服务器(可能经负载均衡、反向代理)处理并返回响应,可能是重定向(301/302)则重来。
  5. 浏览器渲染:解析 HTML 构建 DOM、解析 CSS 构建 CSSOM、执行 JS,合成渲染树后布局、绘制、合成上屏;过程中的子资源(CSS/JS/图片)重复上述请求流程,并应用强缓存/协商缓存。
  6. 连接处理:keep-alive 保持连接供后续请求复用,最终四次挥手关闭。

易错点与追问:DNS 用的是 UDP(大多情况);渲染中 CSS 阻塞渲染、JS 阻塞解析的细节;各环节都是性能优化的切入点(DNS 预解析、CDN、缓存、懒加载)。这题是开放综合题,面试官常顺着你提到的每个点深挖,所以只讲自己熟悉的环节、不堆名词是更好的策略。