主题
一次网页访问背后的网络链路
在地址栏输入 URL 后,浏览器需要先确定目标、建立连接,再交换 HTTP 消息。真实实现会并发和复用很多步骤,但可以先用一条主线理解。
1. 解析 URL
浏览器从 URL 中得到协议、主机名、端口、路径和查询参数。协议决定默认端口与后续连接方式。
2. 查询 DNS
主机名需要转换成可以路由的 IP 地址。浏览器、操作系统和递归解析器都可能命中缓存,因此并非每次访问都会发起完整查询。
3. 建立安全连接
HTTPS 通常需要建立传输连接并完成 TLS 握手。HTTP/3 基于 QUIC,把传输和安全握手进行了更紧密的组合。
4. 发送 HTTP 请求
http
GET /javascript/closure HTTP/1.1
Host: example.com
Accept: text/html服务器或 CDN 根据路径、请求头和缓存状态返回响应。静态站点通常能够直接从离用户较近的边缘节点命中缓存。
5. 浏览器渲染
浏览器解析 HTML,发现 CSS、JavaScript、字体和图片后继续发起请求,再构建页面并执行脚本。性能优化往往是在缩短这条链路中的关键等待时间。

