HTTP1.x、HTTP2、HTTPS
HTTP1.x、HTTP2、HTTPS
HTTP1.0
-
短暂的连接:浏览器和服务端只保留短暂的连接,浏览器的每次请求都需要与服务器建立一个
TCPL
连接,三次握手成本高,服务器完成请求处理后立即断开TCP
连接,服务器不跟踪每个客户也不记录过去的请求
-
-
解决方案:
-
添加头信息----非标准的
Connection
字段Connection:keep-alive
-
-
-
缓存处理方法单一:对于缓存处理只能使用请求头中的If-Modified-Since,Expires等字段。
- 浪费带宽:当客户端只是需要某个对象的一部分,服务端却会把整个对象响应,会浪费带宽。
- 没有HOST头信息:默认一个主机只有一个IP地址,没有HOST头,无法处理虚拟主机
HTTP1.1
-
改进:
-
持久连接
-
TCP
连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive
-
-
管道机制
-
同一个
TCP
连接中,客户端可以同时发送多个请求
-
-
新增请求方式
-
PUT
:请求服务器存储一个资源 -
DELETE
:请求服务器删除表示的资源 -
OPTIONS
:请求查询服务器的性能,或者查询与资源相关的选项和需求 -
TRACE
:请求服务器回送收到的请求信息,主要用于测试或者诊断 -
CONNECT
:保留将来使用 - 新增多个状态码
- 在请求头中引入了range头域,允许请求某一部分的资源
- 新增多个缓存处理方式,如ETags等
- 新增了HOST头信息
-
-
缺点:
TCP
连接中,所有的数据通信是按顺序进行的,服务器只有处理完一个请求,才会接着处理下一个。如果前面的处理的特别慢,后面就会有许多请求排队等着-
避免方式:减少请求数,躲开持久连接
-
HTTP2.0
-
特点:
-
采用二进制而非文本格式
-
完全多路复用,请求是并发的,并且可以为请求设置优先级
-
报头压缩:
-
HTTP
协议是没有状态的,导致每次请求都必须附上所有的信息,所以很多请求字段都是重复的 -
对于相同的头部,不需要通过请求发送,只需要发送一次
-
-
服务器推送:
-
允许服务器未经请求,主动向客户端发送请求
-
将客户端需要的内容推送到客户端内存中,避免往返的延迟
-
-
HTTPS
-
HTTP
协议通常承载在TCP
协议之上,在HTTP
和TCP
之间添加一个安全协议层(SSL或TSL)
主要作用:
-
对数据进行加密,并建立一个信息安全通道,来保证传输过程的数据安全
-
对网站服务器进行真实身份认证
HTTPS
和HTTP
的区别
-
HTTPS
是加密传输协议,HTTP
是明文传输协议 -
HTTPS
需要用到SSL
证书,而HTTP
不要 -
HTTPS
比HTTP
更加安全,对搜索引擎友好,利于SEO
-
HTTPS
标准端口443,HTTP
标准端口80 -
HTTPS
基于传输层,HTTP
基于应用层
HTTPS
和HTTP
的工作过程区别
-
HTTP
包含动作:-
浏览器打开一个
TCP
请求 -
浏览器发送一个
HTTP
请求到服务器端 -
服务器发送一个
HTTP
回应信息到客户端 -
TCP
连接关闭
-
-
HTTPS
-
验证服务端
-
客户端和服务器端选择加密算法和密码,确保双方都支持
-
验证客户端
-
使用公钥加密技术来生成共享加密数据
-
创建一个加密的
SSL
连接 -
基于该
SSL
连接传递HTTP
请求
-
HTTPS
加密方式
-
对称加密:加密和解密使用的是同一个密钥
-
非对称加密:
-
加密使用的密钥和解密使用的密钥不相同,分别为公钥和私钥
-
公钥和算法都是公开的,私钥是保密的
-
过程:
-
服务端生成配对的公钥和私钥
-
私钥保存在服务端,公钥保存在客户端
-
客户端使用公钥加密明文传输给服务端
-
服务端使用私钥解密密文得到明文
-
-