从输入网址到网页呈现的全过程
从输入网址到网页呈现的全过程
当你在浏览器输入一个网址并回车,背后会经历一系列网络通信与数据处理步骤,最终将网页呈现出来。
1. 解析域名(DNS解析) 浏览器首先检查本地缓存和 hosts 文件,若无匹配记录,则向本地DNS服务器发起查询。若本地DNS无缓存,会依次向根DNS服务器、顶级域DNS服务器、权威DNS服务器查询,最终获得目标服务器的 IP地址。此过程可能经过 递归查询 与 迭代查询,并将结果缓存以加速后续访问。
2. 建立安全连接(HTTPS/TLS握手) 若使用HTTPS,浏览器会先进行 TCP三次握手 建立连接,然后进行 TLS握手:
- 客户端发送 ClientHello,声明支持的加密套件
- 服务器返回 ServerHello 和数字证书
- 客户端验证证书并生成会话密钥
- 双方使用密钥加密通信,确保数据机密性与完整性。
3. 传输层通信(TCP三次握手) TCP通过三次握手建立可靠连接:
- 客户端发送 SYN 请求
- 服务器回应 SYN+ACK
- 客户端发送 ACK 确认 连接建立后,HTTP数据才能传输。
4. 发送HTTP请求 浏览器构造HTTP请求报文,包括 请求行(方法、路径、协议版本)、请求头(Host、User-Agent等)、空行及可选的请求体(POST时使用)。请求通过TCP发送至服务器。
5. 服务器处理与响应 服务器(可能经过Nginx等负载均衡)解析请求,执行后端逻辑(如数据库查询、业务处理),生成HTTP响应报文(状态行、响应头、响应体),并返回给浏览器。
6. 浏览器接收与渲染 浏览器解析HTML构建 DOM树,解析CSS生成 CSSOM树,合并为 渲染树 并进行布局与绘制。遇到JS会暂停解析执行脚本,可能发起更多HTTP请求获取资源(CSS、JS、图片等)。
7. 连接关闭(TCP四次挥手) 短连接模式下,数据传输完成后,客户端与服务器通过四次挥手释放TCP连接。
8. 页面呈现完成 所有资源加载并渲染后,用户即可看到完整网页,整个过程通常在几百毫秒到数秒内完成。
从输入网址到网页呈现的全过程
http://example.com/2026/03/25/从输入网址到网页呈现的全过程/