HTTP发展史:

HTTP/0.9版本:
只有一个GET命令,仅支持HTML格式,且不支持长连接,客户端和服务端通信完成后就会关闭连接。一次连接一个请求。

HTTP/1.0版本:
支持了更多文件格式,比如图片,视频,二进制文件,网页内容更加丰富。
支持更多方法:GET,POST,HEAD。
增加报头信息:状态码,缓存,权限等功能。
不支持长连接,当客户端和服务端通信完成后就会关闭连接,一次连接一个请求。

HTTP/1.1版本:
支持了长连接,一个连接可以发送多个请求,并且支持一个连接同时发送多个请求。
主要实现是当一个连接传输完成时,并不是马上进行关闭,而是继续复用它传输其他请求的数据,这个连接保持到浏览器或者服务器要求断开连接为止。
支持更多的方法:DELETE
增加Host字段,指定服务器域名。

HTTP: 超文本传输协议,HTTP协议以明文方式发送内容,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
位于应用层的信息分组称为``** 报文(message)**
HTTPS安全套接字层超文本传输协议,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

HTTPS协议的主要作用可以分为两种:

  1. 一种是建立一个信息安全通道,来保证数据传输的安全;
  2. 另一种就是确认网站的真实性。

HTTP与HTTPS有什么区别?
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  1. https协议需要到ca申请证书,一般免费的证书比较少,因而需要一定的费用
  2. http是超文本协议,信息是明文的,https是具有安全性的ssl加密传输协议。
  3. 两种协议连接方式不一样,端口也不一样,http是80,https是443
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

1、客户端发起 HTTPS 请求
2、服务端的配置
3、传送证书
4、客户端解析证书
5、传送加密信息
6、服务端解密信息
7、传输加密后的信息
8、客户端解密信息

起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。

为什么会产生三个随机数?
前两个随机数采用明文传输,存在被拦截的
SSL/TLS
SSL:Secure Sockets Layer 安全套接层
TLS:Transport Layer Security 传输层安全协议
TLS(传输层安全)是更为安全的升级版 SSL

HTTP2.0:

  1. 二进制分帧
  2. 首部压缩
  3. 多路复用
  4. 请求优先级
  5. 服务器推送

HTTP2.0 是HTTP协议自1999年HTTP1.1发布后的首个更新,主要基于SPDY协议。
SPDY是Speedy的昵音,意为“更快”,目标是优化HTTP协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。

HTTP2.0中所有加强性能的核心是二进制传输, 在HTTP1.x中,我们是通过文本的方式传输数据。基于文本的方式传输数据存在很多缺陷,文本的表现形式有多样性,因此要做到健壮性考虑的场景必然有很多,但是二进制则不同,只有0和1的组合,因此选择了二进制传输,实现方便且健壮。

在HTTP2.0中引入了新的编码机制,所有传输的数据都会被分割,并采用二进制格式编码。
应用层(HTTP2.0)和传输层(TCP or UDP)之间增加一个二进制分帧层。在二进制分帧层上,``HTTP2.0会将所有传输的信息分为更小的消息和帧,并采用二进制格式编码,其中HTTP1.x的``**首部信息会被封装到Headers帧**``,``而``**Request Body则封装到Data帧**``。

加密算法:

非对称加密:

RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。
DSA:数字签名算法,是一种标准的DSS(数字签名标准)
ECC:椭圆曲线密码编码学。

对称加密:

DES:数据加密标准,速度快,适用于加密大量数据的场合。
3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别更高。
image.png

公钥加密体制
公钥加密,私钥解密:体制用于保密性时,就是公钥加密,私钥解密。 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密。这样就保证了信息的保密性,因为只有私钥持有者才能正确解密。

私钥加密,公钥解密: 场景是用作签名的, 就是校验信息发送者身份. 只有通过特定私钥的的信息才能被公开出来的公钥解密. 这就唯一确定了信息发送者, 达到签名(不可抵赖)的目的.
2、公钥加密体制用于认证性时,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。

先明确一下概念:
公钥加密私钥解密,也可以说是 “公共密钥加密系统 “
私钥加密公钥解密,一般不这么说,应叫 “私钥签名,公钥验证 “,也可以说是“公共密钥签名系统
[

](https://blog.csdn.net/pthill/article/details/83670755)