输入URL --> URL解析+DNS域名解析 --> TCP三次握手 --> TCP四次挥手 --> 浏览器渲染
1.输入URL:首先判断输入的内容是否是一个网址,如果不是一个网址,则会默认使用浏览器的搜索引擎进行搜索并查询,如果是一个网址,就把这个URL发送给网络进程,首先会在缓存中去查找这个地址,如果缓存中没有找到输入的URL地址则会进行URL解析,解析出要请求的服务器ip地址
缓存的优先级:先在内存中查找,如果内存不存在,则在硬盘中查找,硬盘中也没有则进行网络请求,请求获取的资源再缓存到硬盘和内存中
2.DNS域名解析的目的是找到域名对应的ip地址
首先查看缓存中是否有解析过该URL的记录,如果没有,则本地DNS服务器转发请求,去外部查找对应的根域、顶级域、权威域;
查找缓存的优先级:客户端-->浏览器缓存-->本地host文件-->本地DNS解析的缓存-->本地DNS服务器转发请求(出去找)
3.TCP三次握手:由客户端向服务端发起创建一个TCP链接的请求
4.TCP四次挥手:由客户端向服务端发起断开一个TCP链接的请求
5.浏览器渲染:此时,已经拿到了对应资源的响应体,开始解析和渲染
解析页面步骤:
a.浏览器通过HTMLParser把HTML解析成dom tree(俗称dom树)
b.浏览器通过CSSParser将css解析成Style Rule Tree (俗称cssom树)
c.浏览器将JavaScript通过DOM API和CSSOM API将js代码解析并应用到布局中,根据dom树和cssom树来构造render树,并计算元素的布局信息
d.对render树进行分层,并生成分层树(layer tree)
e.最终render树就是整个页面的文档结构抽象显示,然后按要求呈现响应的效果
渲染引擎:主要负责取得网页的内容(html、XML、图像等等)、计算网页的显示方式,然后输出至浏览器,浏览器的内核不同对网页的语法解释也会有所不同,所以渲染的效果也不相同
js引擎:主要负责解析和执行JavaScript代码来实现网页的动态效果。