当前位置: 代码迷 >> 综合 >> 协议基础-HTTPS、HTTP2.0、HTTP3.0
  详细解决方案

协议基础-HTTPS、HTTP2.0、HTTP3.0

热度:79   发布时间:2023-12-11 23:23:06.0

一、密码学

1.散列

单向的转化为密文的,无法解密恢复的算法,不是严格意义上的加密。

理论上的解密方式:彩虹表碰撞法,通过彩虹表映射原始数据,彩虹表是无数据的字符串对应关系。

2.加密

根据算法计算出一个值,然后可以通过数学方法把明文逆向计算出来的算法。

  • 对称加密:加密方法与解密方法是相同的。不安全。AES、EDS、恺撒加密。
  • 非对称加密:解密方法与加密方法不同。加密方法可以公开,但解密方法不公开,所以安全。RSA。

3.密钥交换算法

  1. 确定2个非常大的素数,这两个数无需保密。
  2. 两端分别选择一个随机数,对两个大素数进行求模运算,随机数需要保密。
  3. 两端分别用对方的模求模,此时两端得到的值相同。

二、证书

证书的生成给予加密规则。

三、https

1.SSL/TLS协议

  • SSL是安全套接层协议
  • TLS是传输层安全协议

https的安全性由ssl协议实现,ssl协议处于应用层和传输层之间。

ssl协议包含4个子协议:‘

  • 握手协议
  • 密钥配置切换协议
  • 应数据协议
  • 报警协议

2.https协议握手过程

https协议验证过程一般是客户端验证服务端,服务端不需要验证客户端,一些特殊情况除外。

  1. 前提:tcp握手已经成功。
  2. 协商过程:客户端发送ssl的支持性信息,服务端接受并选定这些方法,返回给客户端。
  3. 服务端向客户端发送证书(选):只第一次发送,因为客户端会保存证书,且证书体量大。
  4. 服务端向客户端请求客户端证书(选):如果是双向验证。
  5. 协商结束:服务端通知服务端。
  6. 客户端向客户端发送证书(选):如果是双向验证。
  7. 客户端公钥加密:使用服务端提供的的公钥,对客户端公钥加密,发送给服务端。
  8. 客户端私钥签名(选):双向验证。
  9. 生成通讯密钥:基于密钥信息生成。
  10. 客户端准备:客户端通知服务端,将通讯过程切换到加密模式。
  11. 服务端准备:服务端通知客户端,将通讯过程切换到加密模式。
  12. 加密数据:双方使用客户端密钥,通过加密算法对数据进行加密。
  13. 断开通讯:任意一方均可断开ssl连接的消息。
  • 1-5,协商过程。
  • 6-9,生成密钥信息过程。
  • 10-11,准备加密。
  • 12-13,加密通讯及结束。

四、http2.0

特点:

  • 二进制传输效率高,更紧凑
  • 报头压缩,降低开销。
  • 默认使用加密模块。
  • 多路复用,并行请求。
  • 服务端主动推送,降低请求延迟。

多路复用:

  • 功能:除了页面骨架(因为包含引用资源路径),将大多数资源分块,每次传送一部分。
  • 解决的问题:如果串行传输,那么如果某个css在js传输后才被传输,那么页面会有卡顿。
  • 新产生的问题:虽然解决了文件层面上的堵塞,但是可能会产生传输层面上的堵塞(http3.0解决)。

服务器推送:

  • 使用场景,轮询场景。
  • websocket协议,建立在http协议上,需要进行协议切换,状态码为101。

协议头:

http2.0改变了请求头封装,将请求行替换为伪头

  • :method,相当于method
  • :scheme,相当于url
  • :authority,相当于host
  • :path,url查询部分,?
  • :status,相当于status

五、http3.0

http2.0依然是在tcp协议的基础上,对http1.0协议做了有限的修改。http3.0是颠覆性的变化,只留下了http协议的皮。

http3.0基于google开发的,基于udp的全新的应用层协议。http3.0 = udp + quic。

udp协议类似于广播,只管发送不管是否有人收听,http3.0解决了这个问题。它的协议管理接听者是否接收了协议,如果没有接收到就重新发送。

优势:

  • 减少握手延迟(创建稳定连接过程)
  • 多路复用,因为udp可以多对多传输
  • tcp协议如果有包传送出问题,会一直尝试重发;http3.0采用事后补救的方式
  • tcp ip固定,如果断网,ip会失效,重新连接要重新连接tcp ip握手;http3.0关注的是服务器发送数据的身份识别码

  相关解决方案