美文网首页前端之路——文章转载
从一个url地址到最终页面渲染完成发生了什么

从一个url地址到最终页面渲染完成发生了什么

作者: dear智子 | 来源:发表于2020-05-31 15:00 被阅读0次

    通常上网的时候,敲入一个域名地址,电脑会首先向DNS服务器搜索相对应的IP地址,服务器找到对应值之后,会把IP地址返回给你的浏览器,这时浏览器根据这个IP地址发出浏览请求,这样才完成了域名寻址的过程。操作系统会把你常用的域名IP地址对应值保存起来,当你浏览经常光顾的网站时,就可以直接从系统的DNS缓存里提取对应的IP地址,加快连线网站的速度。

    1.DNS解析:浏览器会把输入的域名地址解析为ip地址

     DNS:全称-Domain name resolution  中文名:域名解析
    

    过程:

    • 先读取浏览器的DNS缓存,如果有域名对应的IP地址,就会把IP地址返回给你的浏览器,这时浏览器根据这个IP地址发出浏览请求,如果没有

    • 就读取本地系统的DNS缓存,如果有域名对应的IP地址,就会把IP地址返回给你的浏览器,这时浏览器根据这个IP地址发出浏览请求,如果没有

    • 就读取路由器的DNS缓存(路由器存在并且路由器存在DNS缓存),如果有域名对应的IP地址,就会把IP地址返回给你的浏览器,这时浏览器根据这个IP地址发出浏览请求,如果没有

    • 就从网络运营商的DNS缓存读取,比如移动运营商的服务器上有DNS缓存,通常能从这四步找到IP地址,如果还是没找到

    • 需要做递归搜索,如:blog.baidu.com

      • .com根域名下查找DNS解析,如果有就使用,如果没有

      • 就在.baidu域名下查找DNS解析,如果有就使用,如果没有

      • 就在.blog域名下查找DNS解析,如果有就使用,如果没有,最终找不到IP

      • 那就出错了

    DNS解析完之后有了IP地址,从而可以真正可以跟服务器进行交互

    2.在交互之前有TCP连接,TCP是因特网中的传输层协议,使用三次握手协议建立连接

    • 第一次握手,由浏览器发起,告诉服务器我要发送请求了。

    • 第二次握手,服务器忙的时候不能接收客户端的请求,服务器有空的时候准备好一些空间、打开一些接口,由服务器发起,告诉浏览器我准备接受了,你赶紧发送吧。

    • 第三次握手,浏览器可能出问题不打算发请求了,浏览器确定无问题可发请求时,由浏览器发起,告诉服务器,我马上就发了,准备接受吧。

    三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

    3.发送请求:通过规定的协议(http)向目标主机发送请求

    -请求报文,http协议的通信内容

    4.接受响应

    -响应报文

    5.渲染页面

    • 遇见HTML标记,浏览器调用HTML解析器解析成Token并构建成dom树

    • 遇见style/link标记,浏览器调用css解析器,处理css标记并构建cssom树

    • 遇见script标记,调用JavaScript解析器,处理script代码(绑定事件,修改dom树/cssom树)

    • Render Tree: 将dom树和cssom树合并成一个渲染树(Render Tree)

    • layout,顾名思义就是计算出每个节点在屏幕中的位置(布局)

    • Painting:通过显卡,将Layout后的节点内容分别呈现到屏幕上。(渲染)

    注意:这五个步骤不一定按照渲染顺序执行,如果dom树或cssom树被修改了,可能会执行多次布局和渲染往往实际页面中,这些步骤都会执行多次的。

    6.断开连接,TCP四次挥手

    • 第一次挥手,由浏览器发起的,发送给服务器,我东西发完了(请求报文),你准备关闭吧。

    • 第二次挥手,由服务器发起的,告诉浏览器,我东西接受完了(请求报文),我准备关闭了,你也准备吧

    • 第三次挥手,由服务器发起,告诉浏览器,我东西发送完了(响应报文),你准备关闭吧。

    • 第四次挥手,由浏览器发起,告诉服务器,我东西接受完了,我准备关闭了,你也准备吧。

    相关文章

      网友评论

        本文标题:从一个url地址到最终页面渲染完成发生了什么

        本文链接:https://www.haomeiwen.com/subject/qqzlzhtx.html