HTTP1.x-HTTP2-HTTPS
# HTTP1.x-HTTP2-HTTPS
# 1. http/1.x
- 缺陷:线程阻塞,在同一时间,同一域名下面的请求有一定的数量限制,超过限制数目的请求会被阻塞
# (1). http1.0
缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求
解决方案:添加头部信息----非标准的Connection字段
Connection:keep-alive
# (2). http1.1
- 针对与http1.0的改进点
持久连接:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明
Connection:keep-alive
(对于同一个域名,大多数浏览器允许同事建立6个持久连接)管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求
分块传输编码:即服务端每产生一块数据,就发送一块,采用“流模式”而取代“缓存模式”
新增请求方式
PUT:请求服务器存储一个资源;
DELETE:请求服务器删除标识的资源;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
CONNECT:保留将来使用
缺点: 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信式按次序进行的。服务端只有处理完一个请求,才会处理下一个请求,如果前面的处理特别慢,后面的就会又许多的请求排队等着,这就将导致“队阻塞”
避免方式: 一是减少请求数,二是同时多开持久连接
# 2. http/2.0
特点
采用二进制格式而非文本格式
完全多路复用,而非有序并阻塞的、只需一个链接即可实现运行
使用报头压缩,减低开销
服务器推送
- 二进制协议
- http/1.1版的头信息肯定是文本(ASCLL编码),数据体可以是文本,也可以是二进制。http/2则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为“帧”:头信息帧和数据帧
- 二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少
- 完全多路复用
- http/2复用TCP连接,在一个连接里,客户端和浏览器端都可以同时发送多个请求或者回应,而不用按照顺序一一对应,这样就避免了“队头阻塞”
- 报头压缩
- http协议是没有状态,导致每次请求都必须附上所有信息,所以去,请求的很多头字段都是重复的,比如cookie,一样的内容每次请求的时候都必须带上,这样会浪费很多带宽,也影响速度
- 对于相同的头部,不必再通过请求发送,只需要发送一次
- http/2对这一点做了优化,引入了头部信息压缩机制
- 一方面,头信息使用gzip或compress压缩后再发送
- 另一方面,客户端和服务器同时维护一张头信息表,所有头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同样字段了,只需要发送索引号
- 服务器推送
- http/2允许服务器未经请求,主动向客户发送资源
- 通过推送那些服务器任务客户端将会需要的内容到客户端的缓存中,避免往返的延迟
# 3. https
http协议通常承载于TCP协议之上,在http和TCP之间添加一个安全协议层(SSL和TSL),这个时候,就成了我们说的https
- https主要作用
- 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全
- 对网站服务器进行真实身份认证
- http和https的区别
- https是加密传输协议,http是名文传输协议
- https需要用到SSL证书,而http不用
- https比http更加安全对搜索引擎更友好,利于SEO
- https标准端口,http标准端口80
- 5.http基于传输层,http基于应用层
- http和https的工作过程的区别
- http包含的动作:
浏览器打开一个TCP连接
浏览器发送HTTP请求到服务器
服务器发送HTTP回应到浏览器
TCP关闭
- SSL包含动作(https多http的一部分)
验证服务端
客户端和服务端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成加密数据
创建一个加密的SSL连接
基于上面的SSL连接传递HTTP请求
- https的加密方式
对称加密:加密和解密都是用的同一个密钥
非对称加密:加密和解密使用的密钥是不同的,分别成为:公钥、私钥;公钥和算法都是分开的,私钥是保密的
- 非堆成加密过程:服务端生成配对的公钥和私钥
- 私钥保存在服务端,公钥发送到客户端
- 客户端使用公钥加密明文传输到服务端
- 服务端使用私钥解密密文得到名文
数字签名:就是在信息的后面再加上一段内容,可以证明信息没有被修改过