1、DNS解析,将域名地址解析为ip地址
-- 浏览器DNS缓存
-- 系统DNS缓存
-- 路由器DNS缓存
-- 网络运营商DNS缓存
-- 递归搜索,blog.baidu.com
- .com域名下查找DNS解析
- .baidu域名下查找DNS解析
- blog域名下查找DNS解析
- 出错了
2、TCP链接,TCP三次握手
-- 第一次握手,浏览器发起,告诉服务器我要发送请求了
-- 第二次握手,有服务器发起,告诉浏览器我准备接收了,你赶紧发送吧
-- 第三次握手,由浏览器发起,告诉浏览器,我马上发了准备接收吧
3、发送请求
-- 请求报文,HTTP协议的通讯内容
4、接收响应
-- 响应报文
5、渲染页面
-- 遇见HTML标记,浏览器调用HTML解析器解析成Token并构成dom树
-- 遇见style/link 标记,浏览器调用css标记被构建树
-- 遇到script表示,调用javascript 解析器,处理script代码(绑定时间,修改dom树/cssom树)
-- 将dom树和css树合并成一个渲染树
-- 根据渲染树来计算布局,计算每个节点的几何信息(布局)
-- 将各个节点颜色绘制到页面上(渲染)
注意:这五个步骤不一定按照顺序执行,如果dom树或cssom树被修改了,可能会执行 多次布局和渲染,往往实际中这些步骤都会执行多次
6、断开连接,TCP四次挥手
-- 第一次挥手浏览器发起,发送给服务器,我东西发完了(请求报文)你准备关闭吧
-- 第二次挥手,有服务器发起,告诉服务器,我东西接收完了(请求报文) 我准备关闭了你也准备吧
-- 有服务器发起,告诉浏览器,我东西发完了(响应报文)你准备关闭吧
-- 有浏览器发起,我东西接收完了,我准备关闭了(响应报文)你也准备吧