在地址栏上输入一个url,到这个页面呈现出来,中间会发生什么?

116 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金之路

个人总结在地址栏上输入一个url,到这个页面呈现出来之间的过程如下:

  1. url ->baidu.com 域名是代称 ->ip
    首先浏览器去本地hosts文件去查,是否域名有绑定ip

  2. 如果本地host没有域名绑定 ----》》运营商的DNS服务器进行解析 DNS解析-》ip

  3. 如果拿到了ip,要进行Tcp连接 ----》三次握手,通俗一点理解如下:

    客户端:大哥我要连你
    服务端:连吧
    客户端:好了 连接上了

    总结一句话也就是:
    客户端发送 SYN 数据包给服务器

    服务器收到客户端的数据包,返回 SYN/ACK 数据包给客户端

    客户端收到服务器的返回后,发送 ACK 数据包给服务器,代表握手结束,连接成功

    那么为什么要进行三次握手?
    因为要确保双方发送数据的畅通。需要三次握手才能确认双方的接收与发送能力是否正常。 第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据

  4. Tcp连接上,客户端向服务端发起一次请求,请求资源

  5. 服务端相应客户请求,并返回客户端需要的资源

  6. 资源已经拿到了,不用Tcp连接 --》tcp断开连接 --》》四次挥手

    客户端:大哥我接受完了,断开吧
    服务端:好的,我看看还有啥东西要给你
    服务端:ok了没有给你的东西了
    客户端:ok

  7. 渲染页面(怎么具体渲染页面)

    解析HTML以构建DOM树 –> 构建渲染树 –> 布局渲染树 –> 绘制渲染树

    渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容