从输入url到页面加载完成中间发生了什么
1.浏览器的地址栏输入URL并按下回车。
2 .在我们的电脑上先把通过DNS服务器域名解析成IP地址
3我们的电脑要和服务器建立一个TCP的网络连接
-
1、第一次握手:客户端给服务器发送一个 SYN 报文。
-
2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。
-
3、第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。
-
服务器收到 ACK 报文之后,三次握手建立完成,作用是为了确认双方的接收与发送能力是否正常。
4 我们的浏览器往ip地址为解析后的服务器上发送http请求
4服务器收到http请求,服务器处理http请求
5服务器处理http请求后,开始回复我们的浏览器
6 我们的电脑和服务器之间断开TCP链接(四次挥手)
-
客户端发送断开TCP连接请求的报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中的FIN字段置为1,表示需要断开TCP连接。(FIN=1,seq=x,x由客户端随机生成);(客户端发送断开TCP请求的包)
-
服务端会回复客户端发送的TCP断开请求报文,其包含seq序列号,是由回复端随机生成的,而且会产生ACK字段,ACK字段数值是在客户端发过来的seq序列号基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP断开请求已经得到验证。(FIN=1,ACK=x+1,seq=y,y由服务端随机生成);(服务端收到断开请求的包后,表示同意断开)
-
服务端在回复完客户端的TCP断开请求后,不会马上进行TCP连接的断开,服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕,就会将回复报文的FIN字段置1,并且产生随机seq序列号。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成);(服务器发送断开TCP连接的请求,准备断开)
-
客户端收到服务端的TCP断开请求后,会回复服务端的断开请求,包含随机生成的seq字段和ACK字段,ACK字段会在服务端的TCP断开请求的seq基础上加1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成)(浏览器收到断开的请求断开了)
6 浏览器收到http回复后,开始解析html+css在浏览器上绘制形成我们看到的网页了
-
浏览器会将HTML解析成一个DOM树,DOM 树的构建过程是一个深度遍历过程:当前节点的所有子节点都构建好后才会去构建当前节点的下一个兄弟节点。
-
将CSS解析成 CSS Rule Tree 。
-
根据DOM树和CSSOM来构造 Rendering Tree。注意:Rendering Tree 渲染树并不等同于 DOM 树,因为一些像Header或display:none的东西就没必要放在渲染树中了。
-
有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系。下一步操作称之为layout,顾名思义就是计算出每个节点在屏幕中的位置。
-
再下一步就是绘制,即遍历render树,并使用UI后端层绘制每个节点。
http协议
超文本传输协议
协议:双方或者多方共同遵守的约定
http协议:浏览器和web服务器之间建立的约定
http请求:请求头,请求行,请求体
请求资源:url
请求方式:get,post ,put ,delete,options
请求携带的数据:
header,url地址后面,请求体
get和post请求的区别
get请求数据放到url地址后面(不安全,携带的数据量小),post请求放在请求体,安全(携带的数据量大)
http回复 响应的状态码+响应的文本(回复的内容)
http响应状态码,标识http有没有成功
100:请求未完成
200:请求成功
302:重定向(服务端解析请求后跳转到别的资源)
3