从输入URL到页面加载发生了什么?

一、DNS解析(网址->IP地址)

dns是一个域名系统,是万维网上作为bai域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串

从浏览器中查找DNS缓存
如果没有,继续到操作系统中查询DNS缓存
如果没有,开始分级查询

  1. 本地DNS服务器
  2. 根域名服务器
  3. COM顶级域名服务器
  4. goole.com域名服务器
    查到IP地址后,继续下一步

二、TCP连接(三次握手)

http超文本传输协议是TCP/IP协议的子集,TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急)

  1. 第一次握手:客户端 -> 服务端

客户端向服务端发送请求报文,请求建立连接,等待服务端确认。发送字段:
SYN=1(synchronization 同步。请求建立连接)
Seq=x(sequence 客户端序列号)

  1. 第二次握手: 服务端 -> 客户端

服务端表明收到请求报文并同意建立连接,发送确认报文,询问客户端是否准备好。返回字段:
SYN=1(同意建立连接)
ACK=x+1(acknowledgement 答复。客户端序列号+1)
Seq=y(服务端序列号)

  1. 第三次握手:客户端 -> 服务端

客户端表明收到确认报文,再返回服务端一个确认报文,表示准备开始发送信息。发送字段:
SYN=0(开始发送信息)
ACK=y+1(服务端序列号+1)
Seq=x+1(序列号设置为服务端ACK)

第一次表明客户端有发送信息的能力
第二次表明服务端有接收信息和发送信息的能力
第三次表明客户端有接收信息的能力

三、 客户端发送HTTP请求

四、服务端处理请求,并返回HTTP报文

五、浏览器解析并渲染页面过程

浏览器解析页面过程:
  1. 浏览器接收到HTML模板文件,自上而下解析HTML
  2. 浏览器遇到CSS样式文件表,暂停解析HTML,请求CSS文件
  3. 服务端返回CSS文件,浏览器开始解析CSS
  4. 浏览器解析完CSS,继续解析HTML,遇到DOM节点,解析DOM
  5. 浏览器遇到img图片,异步请求图片,继续解析后面的代码
  6. 浏览器返回图片,由于图片占有面积影响布局,浏览器重绘
  7. 浏览器遇到js脚本文件,停止所有文件加载和解析,请求并执行脚本文件(js阻塞,所以js标签尽量放在body最后)
  8. 浏览器执行完脚本文件,如果后面还有代码,继续解析
  9. 加载并解析完所有HTML、CSS、JS文件,页面出现
浏览器渲染页面过程:

1.解析HTML,构建DOM树;解析CSS,生成CSS规则
2.构建render树(渲染树,HTML + CSS,不包括display:none)
3.布局render树(layout过程,计算宽高、定位、坐标、换行、positions、overflow、z-index等属性)
4.绘制render树(painting过程,背景 —> 浮动 -> content -> padding -> border)

引起浏览器重新布局layout:
js 修改 DOM 属性或 css 属性,分为两种情况:
1. 重绘,不改变定位、宽高等,只改变元素展示方式
2. 重排/回流,影响文档内容、结构或元素定位
优化:
1. 脱离文档流的重排只影响自己子孙元素
2. 读取element属性会造成重排,尽量避免。如offsetTop/scrollTop/clientTop系列

六、TCP连接结束(四次挥手)

  1. 第一次挥手:客户端 -> 服务端
    客户端发送断开连接的请求
    FIN (finish 结束)
    ACK=1000 (acknowledgement 答复)
    Seq=x (sequence 客户端序列号)
  2. 第二次挥手:服务端 -> 客户端
    服务端接收并同意断开连接的请求
    ACK=x+1 (acknowledgement 答复,客户端序列号+1)
    Seq=1000 (服务端序列号设置为客户端ACK)
  3. 第三次挥手:服务端 -> 客户端
    服务端发送断开连接的请求
    FIN(finish 结束)
    ACK=x+1 (客户端序列号+1)
    Seq=1000(服务端序列号)
  4. 第四次挥手:客户端 -> 服务端
    客户端断开连接,完成通讯
    ACK=1000+1 (服务端序列号+1)
    Seq=x+1(客户端序列号设置为服务端ACK)
第一次表明发完了
第二次表明知道发完了
第三次表明收完了
第四次表明知道收完了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容