首先来看看HTTP和HTTPS分别是什么?
HTTP
HTTP的特点
1、灵活可拓展
报文里面没有做严格的语法语义限制,开发者可以根据自己的需求拓展。
2、可靠传输
因为HTTP是基于TCP的,TCP是可靠传输协议,所以HTTP也是可靠传输。
3、“请求-应答”模式
HTTP的传输数据是“请求-应答”模式。
4、无状态
HTTP是无状态的。
HTTP如何传输大文件
1、数据压缩
使用Accept-Encoding字段可以协商数据压缩。
2、分块传输
当我们需要分块传输的时候,只需要在请求头加上Transfer-Encoding: chunked。
3、范围请求
也可以使用范围请求Accept-Ranges: bytes。
HTTP连接管理
HTTP有短连接和长连接两种,如果需要长连接,在请求头上加上Connection: keep-alive,就可以保持长连接。
HTTP性能优化
1、并发连接
为了缓解队头阻塞这些问题,HTTP支持并发连接,可以同时对一个域名发起多个长连接。
2、域名分片
HTTP的Cookie机制
1、Cookie的工作过程
服务器发送响应头字段Set-Cookie携带cookie给浏览器,然后浏览器储存cookie,请求服务器时将cookie放在请求头字段。
2、Cookie的属性
(1)设置Cookie的生存周期(有效期) 浏览器会有限采用Max-Age来计算失效时间。Max-Age就是相对时间,浏览器用收到报文的时间点加上Max-Age就会得到失效的绝对是件。
(2)设置Cookie的作用域 Domain:Cookie所属的域名
Path:Cookie所属的路径
3、Cookie的安全性
HttpOnly:该Cookie只能通过浏览器HTTP协议传输,禁止其他访问。
SameSite:防范“跨站请求伪造”(XSRF)攻击。
Secure:表示仅能用HTTPS协议加密传输。
HTTPS
HTTPS的特点
HTTPS最为突出的特点就是它是基于SSL/TLS的。
1、使用了对称加密和非对称加密:
(1)对称加密:加密和解密都使用同一个密钥,常用的TLS对称加密算法:AEC和CHACHA20
(2)非对称加密:也叫公钥加密算法,即是用公钥加密,私钥解密。常用的非对称算法:RSA,ECC,DH,DSA
2、需要数字签名和证书:
(1)数字签名:即是跟非对称加密类似,只不过这里是使用私钥加密,公钥来解密。
(2)数字证书:比较权威的机构是CA(证书认证机构),数字证书也标志通讯各方身份的一个数字认证。
3、基于TLS
(1)首先是TLS1.2,使用了TLS握手机制
(2)TLS1.3,它跟TLS1.2相比,最大化了兼容性,也强化了安全性,提升了性能。
HTTPS的优化
1、硬件优化
(1)选择更快的CPU
(2)选择SSL加速卡
(3)选择SSL加速服务器
2、软件优化
(1)软件升级
(2)协议优化
3、证书优化
(1)证书传输
(2)证书验证
4、会话复用
5、预共享密钥
HTTPS和HTTP的主要区别
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
HTTP2(更安全的HTTP,更快的HTTPS)
可以从图中看懂,HTTP其实也是基于TLS的,只不过多了个头部压缩HPACK算法。我们来看一下HTTP2的算法:
1、兼容HTTP1
2、头部压缩
TLS连接成功之后,会用HPACK算法来压缩头部数据
3、二进制帧
头部压缩之后,HTTP/2就要把报文拆成二进制的帧来发送
4、虚拟的流
5、强化安全
6、多路复用
HTTP3
HTTP3.0又称为HTTP Over QUIC,其弃用TCP协议,改为使用基于UDP协议的QUIC协议来实现。
1、QUIC协议
QUIC协议其实就是就是基于UDP的协议。
2、解决了队头阻塞
因为将TCP抽掉,换成了UDP,而UDP是无序的,包之间没有依赖关系,所以从根本上解决了“队头阻塞”问题。