1.我们首先打开一个浏览器然后在顶部的地址栏输入网址,例如www.baidu.com(这个是服务器的域名) 2.输入网址后我们敲回车,首先客户端将网址发送给DNS域名解析系统(也就是一个数据服务器,里面存储了服务器域名和IP地址的对应关系),通过解析得到一个ip地址,然后通过这个IP地址访问对应的服务器。 3.开始建立TCP连接(三次握手) 第一次:客户端向服务器发送连接请求,请求连接服务器。 第二次:服务器向客户端发送确认收到请求并一起发送连接请求,请求连接客户端。 第三次:客户端收到服务器发送的确认信息和连接请求后,向服务器发送确认请求信息,客户端和服务器就成功建立了TCP连接。 4.发送请求,例如我们需要通过百度搜索访问“掘金”,需要在搜索框输入“掘金”然后敲回车键,敲回车就是向服务器发送请求。 5.服务器收到请求之后给出相应的回应,回应的是响应的资源,之后浏览器还需要对资源进行解析和渲染。 6(客户端)浏览器收到相应资源后进行解析和渲染: 浏览器对收到的资源中的HTML进行解析,并生成DOM树。(D--->document O--->object M--->model) 浏览器对收到的资源中的css进行解析,并生成CSSOM规则树。 DOM树和CSSOM规则树合成一个渲染树 浏览器就可以根据这棵渲染树把页面渲染出来,然后就是用户看到的页面了。
其中我们要记住浏览器每打开一个选项卡就是开启一个进程,我们可以同时开启多个进程。每个进程中又有多个线程,其中有一个是js线程,有一个是UI线程。UI线程对HTML和CSS进行处理,js线程对js进行处理。UI线程把HTML构建成DOM树,把CSS构建成CSS树,DOM树和CSS树合并,形成渲染树,只有树形成了,浏览器才能根据这颗树进行渲染。