一、解析URL

​ · 浏览器解析输入的URL,检查协议、域名、端口和路径。

​ · 若是非完整URL(如输入baidu.com),浏览器会尝试补全(自动添加https://)。

二、检查缓存

​ · 浏览器检查HSTS列表,若域名在列表中,自动将HTTP请求升级成HTTPS。

​ · 查看本地缓存是否有该资源的缓存副本,若有效则直接使用。

三、DNS解析

​ · 每个网址都有对应的ip地址,ip地址有数字组成,不便于记忆,将url地址解析为ip地址的过程就是DNS解析

​ · DNS就是一个记录着url与其对应的ip地址的数据库。

​ · 将域名转换为ip地址:

​ 1.浏览器缓存–>系统缓存(hosts文件)–>路由器缓存–>ISP的DNS服务器。

​ 2.若未命中缓存,DNS服务器通过递归查询(如根域名服务器–>顶级域名服务器–>权威域名服务器)。

四、建立TCP连接

​ · 通过三次握手建立连接

​ · 如果是HTTPS,还需进行TLS握手:

​ 1.协商加密套件;

​ 2.服务器发送证书(由CA机构签发,验证身份);

​ 3.生成会话秘钥(Session Key),后续通信加密。

五、发送HTTP请求

​ · 浏览器发送HTTP请求:

​ · 请求行(<请求方式><请求URL><HTTP版本>)

​ · 请求头(如User-Agent、Accept、Cookie)

​ · 请求体(如POST方法的表单数据)

​ · 如果是HTTPS,数据会被TLS加密。

六、服务器处理请求

​ · 服务器接收请求

​ · 生成响应

七、接受响应并解析

​ · 浏览器接收响应:

​ · 状态码(2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误)

​ · 响应头(Content-Type、Cache-Control、Set-Cookie等)

​ · 响应体(HTML、CSS、JS等)

​ · 解析HTML

八、加载子资源

​ · 解析过程发现图片、CSS、JS等资源时,重新触发HTTP请求(可能复用TCP连接)

​ · 现代浏览器会通过预加载扫描器提前下载资源

九、渲染页面

​ · 布局,绘制,合成

十、连接关闭

​ · 通过TCP的四次挥手关闭连接