从输入URL到页面加载发生了什么
- DNS 解析: 将域名解析为 IP 地址,浏览器先检查本地缓存是否有对应的 IP 地址,如果没有就向本地 DNS 服务器发起请求,逐级向上查找,直至找到对应的 IP 地址。
- TCP 连接: 使用三次握手建立 TCP 连接。客户端向服务器发送 SYN 报文,服务器回应 SYN+ACK 报文,客户端最后发送 ACK 报文确认连接建立。
- 发送 HTTP 请求: 浏览器向服务器发送 HTTP 请求,请求报文中包括请求方法、URL、协议版本等信息。
- 服务器处理请求并返回 HTTP 报文: 服务器根据接收到的请求报文进行处理,如果请求成功,服务器会返回一个包含响应状态、响应头和响应体的 HTTP 响应报文。
- 浏览器解析渲染页面: 浏览器接收到响应报文后,根据响应头的信息判断返回的内容类型(HTML、CSS、JavaScript 等),然后进行页面解析和渲染。浏览器解析 HTML 构建 DOM 树,解析 CSS 构建 CSSOM 树,然后将二者结合生成渲染树,最终渲染在浏览器窗口中。
- 连接结束: TCP 连接通过四次挥手来结束。客户端或服务器一方发起关闭,通过 FIN 报文进行通知,对方确认后发回 ACK 报文,双方依次发送 FIN+ACK 报文确认关闭。