从地址栏输入地址到页面渲染发生了什么?

414 阅读2分钟

DNS:把域名翻译成IP地址 域名系统

1.DNS解析:将域名地址解析为ip地址

  • 浏览器DNS缓存
  • 系统DNS缓存
  • 路由器DNS缓存
  • 网络运营商DNS缓存
  • 递归搜索:www.baidu.com
    • .com下查找DNS解析
    • .baidu下查找DNS解析
    • .www下查找DNS解析
    • 再找不到就会出错

2.TCP连接:TCP三次握手

  • 第一次,由浏览器发起,告诉服务器要发送请求了
  • 第二次,由服务器发起,告诉浏览器准备好了,发送吧
  • 第三次,由浏览器发起,告诉服务器,我要发了,接收吧

3.发送请求

​ - 请求报文:HTTP协议的通信内容

4.接受响应

​ - 响应报文

5.渲染页面

  • 遇见HTML标记,浏览器调用HTML解析器解析成Token并构建成dom树
  • 遇见style/link标记,浏览器调用css解析器,处理css标记并构建cssom树
  • 遇见script标记,调用JavaScript解析器,处理script代码(绑定事件,修改dom树/cssom树)
  • 将dom树和cssom树合并成一个渲染树
  • 根据渲染树来计算布局,计算每个节点的几何信息(布局)
  • 将各个节点颜色绘制到屏幕上(渲染)

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

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

  • 第一次:浏览器发起,告诉服务器,我东西发完了(请求报文),你准备关闭
  • 第二次:服务器发起,告诉浏览器,我东西接受完了(请求报文),我准备关闭了
  • 第三次:服务器发起,告诉浏览器,我东西发送完了(响应报文),你准备关闭吧
  • 第四次:浏览器发起,告诉服务器,我东西接受完了,我准备关闭了(响应报文)