url => dns => ip => tcp(三次握手) => 拿到数据 => dom tree && cssom tree => render tree => layout => paint => tcp(四次挥手) => 结束请求
具体如下:
1.输入url后浏览器通过dns服务器解析域名拿到ip地址
2.通过tcp协议向拿到的ip地址服务器发送请求
3.tcp三次挥手
- 浏览器像服务器发送报文SNY=1 Seq=X(我要向你发送请求了);
- 服务器像浏览器发送报文SNY=1 Ack=X+1 Seq=Y(好的,你发送吧,我准备好了)
- 浏览器像服务器发送报文Ack=Y+1 Seq=Z(好的,我发送请求)
三次挥手是为了防止已经失效的请求又突然请求服务器从而产生错误;
4.请求成功,拿到数据(html/css/js)
5.解析html生成dom树,解析css文件生成css树
6.dom树和css数合并生成render树
7.layout布局计算节点的大小、位置
8.paint通过计算好的大小位置,告知gpu渲染页面
9.准备断开链接,tcp四次挥手
- 浏览器像服务器发送报文Fin=1 ACK=Z Seq=X(我准备关闭了)
- 服务器像浏览器发送报文ACK=X+1 Seq=Z(好的我收到了,我也准备关闭了)
- 服务器像浏览器发送报文Fin=1 ACK=X Seq=Y(你准备关闭吧)
- 浏览器像服务器发送报文ACK=Y Seq=X(好的,你也关闭吧)
10.结束了