2023-浏览器
TCP三次握手
- 第一次握手建立连接时,客户端发送SYN包到服务器,并等待服务器的确认。
- 第二次握手是咱们的服务器收到SYN包,同时自己也给客户端发送一个确认包 SYN+ACK包。
- 等到第三次握手时,客户端收到服务器的SYN+ACK包,向咋们服务器发送确认的ACK包,此包发送完毕,咋们客户端和服务端进入到ESTABLISHED,也就是TCP链接成功状态,到此完成咋们的三次握手。
四次挥手
- 第一次挥手客户端发送一个FIN包,申请断开连接,并等待服务器确认。
- 第二次挥手是服务器回复一个ACK确认包,表示接收客户端的关闭连接请求,但是现在服务器还不能马上去关闭连接,需要检查一下是否还有未处理完毕的数据。
- 第三次挥手服务端处理完所有的数据,给我们的客户端发送FIN包,表示可以断开连接了。
- 第四次挥手,客户端回复ACK包,表示断开连接。
浏览器渲染机制
- 第一步:先查看浏览器缓存,系统化缓存,还有路由缓存,如果存在缓存直接显示,如果没有的话进行下一步。
- 第二步:域名解析,来获取对应的一个IP,然后就是浏览器想服务器发送TCP三次捂。
- 第三步解析HTML,生成DOM树。
- 第四步解析CSS生成CSSDOM树。
- 第五步合并DOM树和CSS规则树,生成render渲染树,渲染树只会包括需要显示的节点和这些节点的样色信息,如果某个节点的样式是display:none的话,那么他就不会构建到render渲染树中
- 第六步根据render渲染树进行布局与绘制
浏览器缓存
- 强缓存:浏览器缓存主要是提高访问效率,比如说我们访问一些网站,第一次访问里面的一些静态资源比如说图片、CSS JS、icon、这些资源,实际上是从服务区下载的,如果说我们刷新网页的话,那这个资源是没有必要在服务器上重新去请求的, 因为它没有变动,像这种资源浏览器会默认认为是一些强缓存,强制缓存当你在第二次访问的时候,他不会再去服务区上重新下载了,同样的会给你返回200状态码,但是这个资源,他会从浏览器的本地缓存里面去取这个图片,那这种图片第二次去取的缓存状态就是强制缓存
- 协商缓存: 就是说我们和后台去协商这个资源,要不要去对他进行缓存,但如果这个资源是一个协商缓存的一个资源,那么第一次返回的结果里面,他是一个状态码是200,同时会携带一个是否更新 last modifier 的一个状态,还会返回一个唯一标识是etag, 你可以理解为是一个,内容资源的一个唯一标识,只要说这个资源在服务器端没有变化,当你下次访问的时候后台会对比这个标签ETag或者说会对比这个 last modified 的一个时间,如果说这个资源没有变化,你们他会告诉你返回一个304的状态,那么浏览器接收到这个304状态之后,他会认为这个资源没有变化,我只需要从本地,把这个缓存的资源结果拿出来就行了
HTTP和HTTPS
- HTTP它属于是一个超文本传输协议,它的信息是明文传输的,但是HTTPS它是具有安全性的
跨域
- 一般是后端通过配置请求头,实现咋们的跨域。
- 另外一个种是本地服务器开启一个代理,实现跨域,前者是在实际项目当中,后者是在实际开发当中