<用户输入url按下回车,一直到用户看到界面,这期间经历了什么>
用户输入url按下回车,一直到用户看到界面,这期间都经历什么?
一. DNS解析缓存:
1. 找到浏览器缓存解析域名;
2. 找到和 DNS 缓存 ;
3. 找到路由器 DNS 缓存;
4. 找到查询 DNS 缓存( 80% 的 DNS 在查找, 到这一步就结束了);
5. 递归查询,(查的是全球 13 台 DNS 根服务器的其中一个)
二. 运行TCP (协议) 连接,三次握手,(更具上一步的请求回来的 IP 地址,去连接服务器)
1. 第一次握手:由浏览器发给服务器(我想给你说话,你能听见吗)
2. 第二次握手:由服务器发给浏览器(我能听见你说吧)
3. 第三次握手:由浏览器发给服务器(好,开始通讯)
三. 发送请求:
四. 响应请求:
五. 浏览器开始解析html:
--- 预解析:将所有的外部资源,发送出去;
--- 解析html: 生成 DOM 树;
--- 解析css: 生成 cssom 树;
--- 合并成一个 render 树;
--- js是否操作 DOM 或2样式;
--- 有: 进行重绘重排(不好:1.尽量避免,2,最小化重绘重排)
--- 没有: null;
--- 最终展示页面;
六. 断开 TCP 连接,四次挥手(确保数据的完整性)
1. 第一次挥手: 由浏览器发给服务器(我的东西接受完了。要断开吗)
2. 第二次挥手 由服务器发给浏览器( 我还由一些东西没有接受完,你等一会,我接受完了告诉你)
3. 第三次挥手:由服务器发浏览器(我接收完了,你断开吧)
4. 第四次握手:由浏览器发给服务器(好的,那我断开了)