问题:从用户输入URL按下回车,一直到用户看到界面,期间发生了什么?
1.DNS解析(缓存)
(1)找到浏览器DNS缓存解析域名
(2)找到本机DNS缓存
(3)找路由器DNS缓存
(4)找运营商DNS缓存(在这一步,80%的DNS都能查到)
(5)递归查询(最不愿意看到的事情,查询的是全球13台DNS根服务器中的一个)
2.进行TCP(协议连接),三次握手(根据上一步请求回来的IP地址,去联系Server)
第一次握手🤝:浏览器发送给服务器。(我想和说话,你能听到吗)
第二次握手🤝:服务器发送给浏览器,(我能听见,你说吧)
第三次握手🤝:浏览器发给服务器(好,那我就开始说了)
3.发送请求(请求报文)
4.得到响应(响应报文)
5.浏览器开始解析HTML
-- 预解析:将所有外部的资源,发请求出去
-- 解析html,生成dom树
-- 解析css,生成cssom树,
-- 合并生成一个render树
-- js是否操作DOM样式
-- 有,进行重绘重排,(这样不好,应该尽量避免,2.最小化重绘重排)
-- 没有,null
-- 最终展示界面
6.断开tcp连接,四次挥手🙋🙋♂️(确保数据的完整性)
第一次挥手🙋:由浏览器发送给服务器。(我的东西接受完了,你关闭吧)
第二次挥手🙋♂️:服务器发送给浏览器。(我还有些东西没接受完,你等一会,我接受好了告诉你)
第三次挥手🙋♂️:服务器发送给浏览器。(我接受完了,你断开吧)
第四次挥手🙋:浏览器发送给服务器。(好的,那我断开了)