<用户输入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. 第四次握手:由浏览器发给服务器(好的,那我断开了)

dns

相关推荐