- 域名解析:检查补全URL,判断输入的是搜索内容还是URL;
- DNS域名解析:查找缓存:如果能找到缓存则直接将IP地址返回给用户,如果没有缓存则需要发送网络请求页面;(本地服务器→根服务器→顶级域名服务器)
- 发起TCP的3次握手;
第一次握手,客户端向服务端发送一个报文,告知服务器想要建立连接。
第二次握手,服务端收到报文后回复客户端一个报文,告知客户端已经收到请求,同意连接。
第三次握手,客户端收到服务端的报文,回复服务端已收到同意连接,开始连接。
- 建立TCP连接后发起http请求;
准备请求:请求头信息:cookie,token等。
发送请求
- 服务器响应http请求,浏览器得到html代码;
服务器响应
浏览器收到响应头
获取响应头数据做判断:content-type:内容类型,status:状态码等等
- 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等);
- 渲染
HTML被HTML解析器解析成DOM树。 CSS被CSS解析器解析成CSSOM树。
浏览器会将CSSOM树附着在DOM树上,样式计算。
生成布局(flow),浏览器通过解析计算出每一个渲染树节点的位置和大小,在屏幕上画出渲染树的所有节点,即重排和回流。
将布局绘制(paint)在屏幕上,显示出整个页面
- 通过4次挥手释放TCP连接;
第一次挥手(FIN),主机1(可以是客户端,也可以是服务端)发送报文,告知主机2没有数据发送给对方。
第二次挥手(ACK),主机2收到主机1的报文,回复主机1,已经知道主机1 没有数据可以发送。
第三次挥手(FIN),主机2向主机1发送,我也没有数据可以发送,请求关闭连接。
第四次挥手(ACK),主机1收到主机2的关闭请求后,回复确认关闭指令给主机2,并关闭连接。
- 浏览器对页面进行渲染呈现给用户。