首页 / 资讯中心 / 文章详情

从输入 URL 到页面展示到底发生了什么?看完吊打面试官!

从输入 URL 到页面展示到底发生了什么?看完吊打面试官! ★ FEATURED ARTICLE
一、前言一道“简单”问题的深水区“从输入 URL 到页面展示中间发生了什么”这大概是前端和后端面试中出现频率最高的一道题。它看起来只是在问一次网页加载但它几乎可以串起计算机网络、操作系统、浏览器内核、Web 安全、性能优化等所有核心知识点。面试官真正想听的不是一句“先 DNS 解析再 TCP 连接然后发请求”的流水账而是你是否理解每一层协议的动机、每一次网络往返的代价以及浏览器在拿到字节流之后所做的复杂工作。本文会按照一条真实请求的完整生命周期展开从你在地址栏敲下回车开始到像素点亮屏幕为止拆解 URL 解析、DNS、TCP、TLS、HTTP、服务器处理、浏览器渲染、缓存与性能优化这些环节。尽量把每一步“为什么这么做、不这样做会怎样”讲透帮助你在面试中把这道开放题回答得更有层次。二、整体流程总览先建立全局图景。一条 HTTPS 请求从发起到页面展示大致会经历下面这些阶段flowchart TD A[输入 URL 并回车] -- B[URL 解析与编码] B -- C[查找缓存与 HSTS] C -- D[DNS 解析] D -- E[建立 TCP 连接] E -- F[TLS 握手] F -- G[发送 HTTP 请求] G -- H[服务器处理] H -- I[返回 HTTP 响应] I -- J[浏览器解析 HTML] J -- K[构建 DOM 与 CSSOM] K -- L[布局排版] L -- M[绘制与合成] M -- N[页面展示]下面逐层拆解。需要说明的是真实世界远比这张图复杂有 CDN、缓存、负载均衡、HTTP/2 多路复用、浏览器预解析等优化但主线始终围绕这张图展开。三、URL 解析与浏览器进程调度3.1 URL 的组成以https://www.example.com:443/path/page.html?q123#section为例它由协议、主机、端口、路径、查询参数和片段等部分组成协议 schemehttps决定使用什么方式通信。主机 hostwww.example.com需要通过 DNS 解析成 IP。端口 port443省略时根据协议使用默认端口HTTP 为 80、HTTPS 为 443。路径 path/path/page.html服务器上的资源定位。查询参数 query?q123通常传给后端逻辑。片段 fragment#section只用于浏览器定位不会发送给服务器。3.2 浏览器如何处理你的输入浏览器的地址栏其实同时承担“搜索框”和“地址栏”两个角色。你输入的内容如果看起来不像合法网址浏览器会把它当作搜索词交给默认搜索引擎如果能解析成 URL才会进入导航流程。浏览器还会做安全校验、Unicode 规范化防止相似字符伪造域名等工作。3.3 多进程架构下的导航现代浏览器如 Chrome是多进程架构浏览器主进程负责 UI 和导航调度网络进程负责网络请求渲染进程负责页面解析和渲染。输入 URL 后由浏览器主进程发起导航网络进程实际执行网络请求响应到达后如果跨站通常会创建一个新的渲染进程来加载页面避免不同站点间的安全隔离被破坏。四、DNS 解析把域名翻译成 IP4.1 为什么需要 DNS网络中的设备通过 IP 地址通信但对人类来说记忆一串数字很不友好域名系统 DNS 就是域名与 IP 之间的“电话簿”。浏览器拿到域名后第一件事就是解析出目标服务器的 IP 地址。4.2 解析顺序与多级缓存DNS 解析不会每次都从根服务器开始它会优先命中各级缓存浏览器缓存浏览器会缓存最近解析过的域名通常会保留一小段时间。操作系统缓存系统本地的 hosts 文件和 DNS 缓存。路由器/本地 DNS 服务器缓存家庭或公司网络的 DNS 服务器会缓存常用记录。权威服务器缓存未命中时会进入真正的域名解析流程。4.3 递归查询与迭代查询真正的 DNS 解析从本地 DNS 服务器开始。它通常以“递归”方式代表客户端向外部查询而对根、顶级域、权威服务器则采用“迭代”方式逐级询问客户端 -- 1. 查询 www.example.com -- 本地 DNS 服务器 本地 DNS 服务器 -- 2. 问根服务器 -- 根 DNS 根 DNS -- 3. 返回 .com 顶级域名服务器地址 -- 本地 DNS 服务器 本地 DNS 服务器 -- 4. 问 .com 服务器 -- .com 顶级域服务器 .com 服务器 -- 5. 返回 example.com 权威服务器地址 -- 本地 DNS 服务器 本地 DNS 服务器 -- 6. 问权威服务器 -- example.com 权威服务器 权威服务器 -- 7. 返回 www.example.com 的 A 记录 -- 本地 DNS 服务器 本地 DNS 服务器 -- 8. 返回 IP 给客户端 -- 客户端常用命令行工具可以直观看到解析结果nslookup www.example.com dig www.example.com short4.4 常见记录类型记录类型含义A域名到 IPv4 地址AAAA域名到 IPv6 地址CNAME域名别名指向另一个域名MX邮件交换记录NS指定该域名的权威服务器TXT存放文本信息常用于 SPF、域名验证等4.5 CDN 与智能解析大型网站不会只解析到一个固定 IP。借助 GSLB 全局负载均衡和智能 DNS系统可以根据用户地理位置、运营商、服务器健康度返回最近或最优的边缘节点 IP这就是 CDN 加速的基础。此时浏览器域名对应的往往不是源站而是离你最近的边缘节点。五、TCP 三次握手建立可靠连接5.1 为什么需要握手拿到 IP 后HTTP 请求需要跑在传输层协议上。HTTP/1.1 和 HTTP/2 默认基于 TCP。TCP 是面向连接的可靠协议三次握手就是为了让双方确认彼此的收发能力并协商初始序列号避免历史连接中的旧数据干扰新连接。5.2 三次握手过程客户端 服务器 | -------- SYN, seqx -------- | | ---- SYN ACK, seqy ----- | | -------- ACK, seqx1 ----- |第一次客户端发送 SYN 报文表示请求建立连接携带初始序列号 x。第二次服务器回复 SYN ACK确认收到客户端的 SYN并带上自己的初始序列号 y。第三次客户端回复 ACK确认收到服务器的 SYN。此后连接建立双方可以开始传数据。前两次握手后服务器进入半连接队列第三次握手完成后连接进入全连接队列等待应用层处理。这也是 SYN 泛洪攻击针对的环节。5.3 四次挥手连接关闭是双向独立关闭所以需要四次挥手。主动关闭方发送 FIN对端 ACK对端再发 FIN主动方 ACK。之所以不能像握手那样合并是因为收到 FIN 时对端可能还有数据没发完需要先把剩余数据发完再关闭自己的方向。5.4 拥塞控制与优化TCP 通过慢启动、拥塞避免、快速重传、快速恢复等机制动态调整发送速率。对 Web 性能来说TCP 往返时间 RTT 是重要指标每多一次握手都意味着延迟增加这也解释了为什么会有 TCP Fast Open 这样的优化手段。六、TLS/HTTPS 安全通道6.1 为什么需要 HTTPS如果是 HTTPS 协议TCP 连接建立后协议层之上还需要进行一次 TLS 握手。HTTPS 等于 HTTP over TLS它解决三个问题加密防窃听、完整性防篡改、身份认证防伪装。6.2 对称加密与非对称加密对称加密加解密使用同一把密钥速度快但如何安全传递密钥是问题。非对称加密公钥加密、私钥解密安全性高但速度慢。TLS 的做法是“混合加密”用非对称加密安全地协商出一把会话密钥之后的数据都用对称加密传输兼顾安全与性能。6.3 证书与认证链服务器把自己的公钥和身份信息交给 CA 签名生成数字证书。客户端拿到证书后用内置的根证书逐级验证整个信任链确认服务器身份真实。若证书无效浏览器会给出安全警告。6.4 TLS 1.2 握手客户端 服务器 | -------- ClientHello ------------- | | ------- ServerHello 证书 -------- | | (验证证书、生成预主密钥) | | -------- 密钥交换信息 ------------- | | ------- Finished ----------------- | | -------- Finished ----------------- | | ------ 后续使用对称密钥加密通信 ------ |6.5 TLS 1.3 的改进相比 TLS 1.2TLS 1.3 减少了往返次数1-RTT 甚至 0-RTT 会话恢复、移除了不安全的老旧算法、默认前向保密握手更快也更安全。这也是现代网站性能优化的重要一环。七、HTTP 请求与报文7.1 请求报文结构连接建立后浏览器会构造 HTTP 请求报文发送给服务器。一个典型的 HTTP/1.1 GET 请求长这样GET /path/page.html?q123 HTTP/1.1 Host: www.example.com Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 ... Accept: text/html,application/xhtmlxml,... Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q0.9 Cookie: session_idabc123报文分为起始行、首部字段和可选的报文主体。常用方法有 GET、POST、PUT、DELETE、HEAD、OPTIONS 等。7.2 常见请求头头部作用Host指定要访问的主机支持同一 IP 上的虚拟主机Connection连接管理如 keep-aliveUser-Agent标识客户端类型Accept客户端能接受的内容类型Accept-Encoding客户端支持的压缩方式Cookie携带会话状态Cache-Control与缓存相关的指令7.3 HTTP 版本演进HTTP/1.0默认短连接每次请求都要重新建连。HTTP/1.1引入持久连接、Host 头等特性仍是文本协议存在队头阻塞。HTTP/2二进制分帧、多路复用、头部压缩、服务器推送大幅提升性能。HTTP/3基于 QUIC从根本上解决 TCP 队头阻塞连接迁移能力更强。八、服务器侧处理8.1 请求如何到达业务代码请求一般不会直接从客户端打到应用服务器。典型的入口链路是负载均衡器如 Nginx、LVS、云厂商 SLB把流量分发到后端的多个应用实例反向代理承担 TLS 终结、静态资源服务、请求转发等职责应用服务器如 Tomcat、Node.js、Spring 应用运行真正的业务逻辑。8.2 常见的处理过程解析请求行和请求头。根据路由规则把请求交给对应的 Handler 或 Controller。执行鉴权、参数校验、查询数据库或调用下游服务。组装数据并生成响应 HTML 或 JSON。对于静态资源很多请求会直接命中 CDN 或代理缓存根本到不了源站这是性能优化的关键。九、HTTP 响应返回9.1 响应报文结构服务器处理完成后返回 HTTP 响应包含状态行、响应头和响应体HTTP/1.1 200 OK Content-Type: text/html; charsetutf-8 Content-Length: 1234 Content-Encoding: gzip Cache-Control: max-age3600 Set-Cookie: session_idabc123; HttpOnly !DOCTYPE html html ... /html9.2 常见状态码状态码含义200成功301永久重定向302临时重定向304未修改使用本地缓存400请求错误401未认证403无权限404资源不存在500服务器内部错误502/503/504网关错误、服务不可用、网关超时需要注意的是浏览器收到响应不代表网页已经显示出来。对于 HTML 文档真正耗时的大头往往在后面的解析与渲染阶段。十、浏览器解析与渲染10.1 从字节到 DOM浏览器拿到 HTML 字节流后先做字符解码得到字符再做词法分析和语法分析构建出 DOM 树。HTML 解析的特点是“容错”遇到不合法标签浏览器会尽量修正而不是直接报错。10.2 CSS 的解析与 CSSOM与此同时浏览器会解析内联与外部 CSS构建 CSSOM 树。CSS 解析完成后才能进入后续布局这也是 CSS 会影响渲染性能的原因。10.3 渲染树的构建DOM 树和 CSSOM 树合并过滤掉不可见节点生成渲染树。渲染树的每个节点都知道自己的可见样式和几何信息。10.4 布局计算每个节点的位置渲染树构建完成后浏览器进入布局阶段也叫回流Reflow。它根据渲染树中每个节点的样式结合视口大小、盒模型、字体、行高等信息计算出每个元素在页面中的精确位置和大小。布局通常是文档级别的根节点变化、窗口尺寸改变、字体加载完成、脚本读取某些布局属性时都可能触发重新布局。频繁修改几何属性会导致大量回流这也是前端性能优化需要重点关注的环节。10.5 绘制与合成从图层到屏幕布局完成后浏览器进入绘制阶段把渲染树中的每个节点转换成真正的像素绘制指令例如背景、边框、文字、阴影等。现代浏览器会把页面拆分成多个图层某些图层可以独立绘制并交给 GPU 合成这就是合成线程的职责。像 transform、opacity 这样的属性通常只触发合成不会引起回流或重绘因此动画性能更好。理解回流、重绘和合成的区别是回答浏览器渲染性能问题的关键。十一、缓存与性能优化11.1 浏览器缓存的角色真实网页加载中并不是每次都要完整走一遍网络请求。浏览器会借助磁盘缓存和内存缓存保存已经请求过的资源。对于带有缓存响应的请求可能直接命中本地缓存连 DNS、TCP 和 TLS 都不需要重新执行。缓存对性能的影响非常大它既减少了带宽消耗也降低了服务器压力还能缩短页面加载时间。浏览器缓存策略通常分为强缓存和协商缓存两类。11.2 强缓存与协商缓存强缓存由 Cache-Control 和 Expires 控制。例如 Cache-Control: max-age3600 表示资源在 3600 秒内有效期间浏览器直接使用缓存不发请求。协商缓存则通过 ETag 和 Last-Modified 等机制与服务器确认资源是否变化如果服务器返回 304浏览器继续使用本地缓存。Cache-Control: max-age3600 ETag: abc123 Last-Modified: Wed, 21 Oct 2026 07:28:00 GMT强缓存命中时完全不需要和服务器通信协商缓存命中时虽然有一次请求但响应体不会重新传输两者都能有效提升加载速度。11.3 其他常见优化手段压缩与传输优化开启 gzip、br 压缩使用 HTTP/2 或 HTTP/3 多路复用减少连接成本。CDN 加速把静态资源部署到离用户更近的边缘节点。资源加载优化关键渲染路径优化、异步加载脚本、图片懒加载与合适的图片格式。减少回流与重绘批量修改 DOM、使用合成友好的 CSS 属性。十二、面试回答框架与总结12.1 先给主链路再展开细节面试中回答这道题建议先给出清晰的主干输入 URL 后浏览器先解析地址并查找缓存缓存未命中时进行 DNS 解析拿到 IP接着建立 TCP 连接HTTPS 还需要完成 TLS 握手然后发送 HTTP 请求服务器处理后返回响应浏览器解析 HTML、CSS 和 JavaScript构建 DOM 和 CSSOM再经过布局、绘制和合成最终把像素渲染到屏幕上。这条主链说完后可以根据面试官追问深入展开DNS 的缓存与智能解析、TCP 的三次握手与拥塞控制、TLS 的加密体系、HTTP 的版本演进、浏览器渲染流程和缓存策略。这样回答既有框架又有细节支撑。12.2 用一句话收束全文从输入 URL 到页面展示本质上就是在网络层、协议层、应用层和浏览器渲染层之间完成一次高效的协作网络负责把数据可靠地送到协议负责保证安全与语义服务器负责生成内容浏览器负责把字节流还原成用户可见的界面。真正理解这条链路中的每一次往返、每一项决策才是这道经典面试题想考察的核心能力。
阅读完成 · 觉得有帮助?
咨询建站