真实面经题目 · 原创解析
一个 HTTP 请求的全过程
这题考察从 URL 到响应处理的完整链路,回答要按缓存、DNS、连接、TLS、HTTP 报文、服务端处理和客户端渲染顺序展开。
一次 HTTP 请求可以从解析 URL 开始讲:客户端先判断协议、域名、端口、路径和参数,检查本地缓存;需要联网时先做 DNS 解析拿到 IP,再建立 TCP 连接,HTTPS 还要完成 TLS 握手和证书校验。连接可用后,客户端发送 HTTP 请求行、请求头和请求体,链路上可能经过代理、CDN、负载均衡和网关。服务端完成路由、鉴权、业务逻辑、缓存或数据库访问后返回状态码、响应头和响应体。客户端收到响应后处理缓存、Cookie、重定向、压缩和内容类型;浏览器场景下还会解析 HTML、加载子资源、构建 DOM/CSSOM、布局、绘制和执行脚本。
URL 决定协议、主机、端口、路径和查询参数。浏览器会先检查强缓存、协商缓存、Service Worker 或预连接等机制,命中时可能不发真实网络请求。
DNS 会经过浏览器缓存、系统缓存、本地 DNS、递归解析和权威 DNS 等层级。解析结果可能是源站 IP,也可能是 CDN 或负载均衡入口。
HTTP/1.1 和 HTTP/2 常见于 TCP 之上,先三次握手建立连接;HTTPS 还要 TLS 协商版本、加密套件、证书链和会话密钥。HTTP/3 则基于 QUIC,连接模型不同。
请求由方法、路径、协议版本、请求头和请求体组成;响应由状态码、响应头和响应体组成。Cookie、Authorization、Content-Type、Cache-Control、Location 等头会影响鉴权、缓存、跳转和解析方式。
请求通常经过 CDN、反向代理、负载均衡、网关、中间件、应用服务、缓存、数据库和下游 RPC。超时、重试、限流、熔断和幂等都会影响最终结果。
收到响应后,客户端要处理状态码、重定向、缓存写入、解压和内容解析。浏览器还要继续解析 HTML、发现子资源、执行 JS、构建渲染树并完成布局绘制。
常见有浏览器缓存、操作系统缓存、本地 DNS 缓存、递归解析器缓存和权威 DNS 记录 TTL。命中缓存能跳过后续解析步骤。
多了 TLS 握手、证书校验、密钥协商和加密传输。它提供身份认证、机密性和完整性,但也引入握手成本,可通过会话复用降低开销。
HTTP/2 在一个连接上做多路复用,并使用二进制帧和头部压缩,减少 HTTP/1.1 多连接或队头排队带来的开销。但 TCP 层丢包仍可能影响整条连接。
先看 DNS、连接、TLS、请求发送、TTFB、响应下载的分段耗时,再结合网关日志、应用日志、数据库慢查询、下游 RPC 和重试记录定位。