浏览器网络资源访问
以一个简单的例子来说明浏览器网络资源访问的过程。
假设我们访问一个地址,输入它的网址www.example.com,最终浏览器显示出页面的内容。
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器响应
- 页面渲染
- 关闭TCP连接 注意浏览 器在执行后续步骤之前会对URL进行解析,如果输入的字符串不符合规范则会使用搜索引擎对字符串进行搜索
第一步 DNS 解析(简化)
典型路径是:浏览器/系统缓存 → 本地递归解析器 → 迭代查询权威链。
- 浏览器、OS 等本地缓存中查找。
- 未命中则问本地 DNS(递归解析器)。
- 递归解析器若无缓存,则向根查询;根通常返回 TLD 的 NS 委派(不是直接给最终 A 记录)。
- 再问
.com等 TLD,得到example.com权威 NS。 - 再问 权威服务器,拿到
www.example.com的 A/AAAA 等记录。 - 解析器缓存结果后返回给浏览器。
sequenceDiagram
participant B as 浏览器
participant R as 递归解析器
participant Root as 根
participant TLD as TLD
participant Auth as 权威 NS
B->>R: 查询 www.example.com
R->>Root: 迭代查询
Root-->>R: 委派 .com NS
R->>TLD: 查询
TLD-->>R: 委派 example.com NS
R->>Auth: 查询
Auth-->>R: A/AAAA 记录
R-->>B: IP
第二步TCP连接(三次握手)
- 浏览器向服务器的IP地址发送一个TCP连接请求。
- 服务器收到请求后,向浏览器发送一个确认连接的TCP包。
- 浏览器收到确认连接的TCP包后,再向服务器发送一个确认包(ACK),至此TCP连接建立完成。