从输入url地址到刷新页面经历来什么?最简单的方式告诉你
步骤
- NDS解析,将域名地址解析为ip地址 (第一步)
- 浏览器DNS缓存
- 系统DNS缓存
- 路由器DNS缓存
- 网络运营商DNS缓存
- 递归搜索 如 blog.baidu.com
- .com 域名下查找DNS解析
- .baidu
- blog
- 出错
- TCP连接,TCP三次握手 (第二步)
- 第一次握手,由浏览器发起,告诉服务器我要发送请求了
- 第二次握手,由服务器发起,告诉浏览器,你赶紧发送
- 第三次握手,由浏览器发起,告诉服务器,我马上就发了,准备接收了。
- 发送请求 (第三步)
- 请求报文:http 协议的通信内容
- 接收响应 (第四步)
- 响应报文
- 渲染页面 (第五步)
- 遇见html 标记,浏览器调用html解析器解析成token并构建成dom树。
- 遇见style/link标记,浏览器会调用css解析器,处理css标记并构建cssom树
- 遇见script标签,会调用script解析器,处理script代码。
- 将dom树和cssom树合并成渲染树
- 根据渲染树来计算布局,计算每个节点的几何信息(布局)
- 将各个节点的颜色绘制到屏幕上(渲染)
注意 这五个步骤,不一定按顺序执行,可能反复执行,或者执行多次布局和渲染,往往在实际页面中,这些步骤会执行多次。
- 断开连接(Tcp的四次挥手)(第六步)
- 第一次挥手: 由浏览器发起,告诉服务器,我东西发完来(请求报文),能准备关闭吧。
- 第二次挥手:由服务器发起,告诉浏览器,我东西接收完来(请求报文),我准备关闭来,你也准备吧。
- 第三次挥手:由服务器发起,告诉浏览器,我东西发送完来 (响应报文),你准备关闭吧。
- 第四次挥手:由浏览器发起,告诉服务器,我东西接收完了,我准备关闭来(响应报文),你也准备吧。
一份帮助文档,无论多么仔细,都不会帮助主人多敲一行代码!