文章目录
从输入URL到页面加载完成发生了什么?
当从输入 URL 到页面加载完成时,会发生以下一系列过程:
-
输入 URL:用户在浏览器地址栏中输入网址 (URL)。 生产HTTP信息
-
域名解析:浏览器对输入的 URL 进行解析,提取出域名,查本地host有无对应ip,查本地DNS服务器有无对应的缓存,否则开启DNS查询,根服务器->域服务器->域名解析服务器,并将ip存入本地DNS服务器缓存。
[发生dns负载均衡的时间:当查询到负责该域名的权威DNS服务器时,该服务器会根据负载均衡策略(如轮询、权重等)选择一个IP地址返回给客户端] -
建立连接:浏览器与目标服务器建立 TCP 可靠连接,通常使用三次握手协议,发送SYN信息、ACK信息,保证双方都有发送和接收的能力。 HTTP请求信息超过一个网络包的最大长度,进行TCP分隔数据,封装TCP信息。封装IP报文,通过IP协议对IP地址进行解析,IP地址+子网掩码->可以得到网络号+主机号。报文里加上MAC头部,包括客户端和服务端的物理地址(通过ARP 协议在以太网中以广播的形式得到服务端的MAC地址)。
-
SSL 握手(可选):如果网站使用 HTTPS,浏览器与服务器之间还需要进行 SSL 握手,以建立安全的加密连接。
-
发送请求:浏览器向服务器发送一个 HTTP 请求,请求中包含所需资源的详细信息,如请求方法(GET、POST 等)、URL、请求头等。 通过网卡将网络包传输,中间经过交换机和路由器,服务端接收到网络包后再一层层的解析mac-ip-tcp-http头信息。
-
服务器处理请求:服务器接收到请求后,根据请求的内容进行相应的处理,如查询数据库、执行后端代码等。
-
返回响应:服务器将处理后的结果以 HTTP 响应的形式发送回浏览器。响应中包含响应状态码(如 200 表示成功),响应头以及响应体(通常是 HTML 文档)。
-
浏览器解析 HTML:浏览器接收到响应后,开始解析 HTML 文档,构建 DOM(文档对象模型)树。
-
加载资源:在解析 HTML 的过程中,浏览器可能会遇到 CSS、JavaScript、图片等外部资源的引用。此时,浏览器会发送额外的 HTTP 请求,加载这些资源。
-
CSS 解析:浏览器将获取到的 CSS 文件解析成 CSSOM(CSS 对象模型)树。
-
JavaScript 执行:浏览器运行 JavaScript 代码,可能会对 DOM 树和 CSSOM 树进行修改。
-
渲染树构建:浏览器将 DOM 树和 CSSOM 树合并成渲染树,渲染树中包含了页面上所有可见元素的样式和位置信息。
-
布局(重排):根据渲染树中的信息,浏览器计算每个元素在屏幕上的确切位置和大小。
-
绘制(重绘):浏览器根据布局结果将元素绘制到屏幕上。
-
页面加载完成:当所有资源都加载完毕,浏览器会触发页面的 “load” 事件,表示页面已经加载完成。 以上过程是从输入 URL 到页面加载完成的整个过程。需要注意的是,这个过程可能会因为网络延迟、服务器速度、浏览器性能等因素而有所不同。
简洁版资料:https://blog.csdn.net/ThinPikachu/article/details/113479674
https://zhuanlan.zhihu.com/p/133906695
缺少https的知识