http与https
1、强缓存 直接使用内存中缓存的资源
设置expries和cache-control响应头
expries响应头是http/1.0产物。代表资源的过期事件,过期事件之前直接从浏览器中存取数据。
cache-control出现于http/1.1 ,主要表现资源缓存的最大有效事件。优先级高于expries
2、协商缓存 向服务器发送协商请求,返回304则使用之前浏览器缓存中的资源
http1.0 1.1 之间的区别
缓存处理
http1.0中主要使用header里if-modified-Since,expires来作为缓存的标准
http1.1 则引入更多的缓存控制策略 entity tag 资源匹配信息 If-Unmodifiyed-Since比较资源最后的更新事件是否一致 If-Match If-None-Match
带宽优化
http1.0中,存在一些浪费带宽的现象
http1.1默认支持断点续传
长连接
http1.0 需要使用keep-alive参数来告知服务器要建立一个长连接,http1.1默认支持长连接
http1.1支持长连接和请求的流水线处理,在一个tcp连接上可以传送多个http请求和响应,减少建立和关闭连接的消耗和延迟
错误通知的管理
http1.1新增24个错误状态响应码,410表示服务器上的某个资源被永久性的删除
新增请求方式
put:请求服务器存储一个资源
delete,options,connect
Http2.0 与Http1.X的区别
http1.x版本的缺陷:线程阻塞,在同一时间,同一域名的请求有一定的数量限制,超过限制数目的请求会被阻塞
二分制分帧
http1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式多样性,要做到健壮性考虑的场景必然很多,二进制则不同,
http2.0的协议解析决定采用二进制格式,实现方便且健壮。
http2.0在应用层和传输层之间增加一个二进制分帧层。http2.0会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制的编码
帧:http2.0数据通信的最小单位消息:指http2.0中逻辑上的http消息。例如请求和响应等,消息由一个或多个帧组成
多路复用
多路复用允许同时通过单一的http2.0连接发起多重的请求-响应消息。即是连接共享,提高了连接的利用率,降低延迟。即每个request都是用作连接共享机制的。一个request对应一个id,这样一个连接可以有多个request,每个连接的request可以随机的混杂在一起,接受方可以根据request的id将request再归属到各自不同的服务器请求里面
在http1.1协议中浏览器客户端在同一时间,针对同一域名下的请求有一定数量上的限制。超过限制数目的请求会被阻塞。这也是为何一些站点会有多个静态资源CDN域名的原因之一。
http1.1也可以多建立几个tcp连接,来支持处理更多并发的请求,但是创建tcp连接本身也是有开销的。
tcp连接有一个预热和保护的过程,检查数据是否传送成功,成功后加大传输速度。因此对应瞬时并发的连接,服务器响应就会变慢。所以最好使用一个建立好的连接,这个连接支持瞬时并发的请求。
header压缩
http1.x的header带有大量信息,而且每次都要重复发送,HTTp2.0使用hpack算法对header的数据进行压缩,减少需要header的数据进行压缩,减少需要传输的header大小,通讯双方各自cache一份header fields表,差量更新http头部,避免重复header的传输,避免重复header的传输,又减少了需要传输的大小。
header采取的压缩策略:
http2.0在客户端和服务器端使用”首部表“来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送
首部表在http2.0的连接存续器内始终存在,由客户端和服务器共同渐进更新
每个新的首部键值对要么被追加到当前表的末尾,要么替换表中之前的值
https
https解决了什么问题?
https保证数据以更保密的方式传输,增加对服务器身份验证,保证数据传输更安全,防止数据的泄漏和篡改
https是什么?原理
https协议中使用了公钥加密系统,但并不是使用非对称加密方法直接对通信信息直接加密,利用非对称算法加密算法传递对称算法加密算法的密钥
https通信的过程
1.服务器维护自己的私钥,服务器将自己的公钥发送给客户端
2.客户端用服务器的公钥加密对称加密私钥,并发送给服务器
3.服务器用私钥解密信息,得到对称加密的私钥,之后客户端和服务器使用对称加密密钥进行保密通信
实际通信还是使用对称加密。使用非对称加密对对称加密密钥进行可靠传递
1.约定非对称加密算法
客户端-》服务器 客户端将自己支持的一套加密规则发送给服务器
服务器-》客户端 选定对称加密和hash算法 服务器将选定的算法和公钥发送给客户端
2.传递非对称加密密钥
客户端-》服务器 生成对称加密密钥,并用公钥加密,得到加密后的随机数 计算握手消息 客户端将加密后的随机数、加密后的握手信息、hash后的握手信息发送到服务器
服务器-》客户端 用私钥解密随机数、握手消息、验证hash后的握手消息 用随机数加密一段握手消息、hash加密握手消息,服务器加密后的握手消息和hash后的握手消息发送给客户端
客户端-》服务器 客户端解密握手消息并验证hash一致 客户端用随机数加密握手消息、hash加密握手消息 客户端将加密后的握手消息和hash后的握手消息发送给服务器
ssl证书的作用 解决客户端和服务器之间的信任问题
证书提供了公钥-私钥对,和域名与公钥绑定关系的证明
服务器安装了证书后,就可以证明身份,在https通信时,客户端接收到服务器发送的证书后会去验证证书的绑定域名是否与当前访问域名一致,一致则可以确认网站身份
xss、csrf攻击原理
xss是什么? cross site scirpt
指黑客通过“html注入”篡改了网页,插入了恶意的脚本,在用户浏览网页时控制用户浏览器的攻击
恶意脚本能够注入页面的前提都是网站会把用户输入的数据通过各种方式渲染到页面上
csrf是什么? cross-site request forgery
跨站请求伪造。指攻击者利用恶意代码向目标服务器发送请求,达到篡改数据、获取信息的目的
过程:正常访问一个网站a,黑客自己建造一个网站b,然后诱导用户访问,在b网站中调用了a网站的接口,由于b网站发送请求时,能够带上用户a网站域名下的cookie,因此请求时合法的
csrf能够完成攻击的关键点
1.黑客能够让用户浏览器执行自己的恶意脚本
2.被攻击的网站允许跨域发送请求并允许跨域请求携带cookie
3.被攻击的网站没有办法区分正常的请求和恶意的请求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术