一、http与https的区别
1、http(HyperText Transfer Protocol)超文本传输协议,https(Hypertext Transfer Protocol Secure)超文本传输安全协议,就是http的安全版本。http与https都属于应用层协议,下一层是TCP(传输层协议),https没有对http作任何修改,https是由http进行通信,但利用SSL/TLS来加密数据包,https是在http与tcp之间加了一个ssl/tls协议。http + 加密 + 认证 + 完整性保护 = https,可以说https是披着ssl/tls外衣的http。
TCP传输控制协议(Transmission Control Protocol)是一种在互联网协议套件中的传输层协议,主要用于确保数据包的可靠传输。
2、ssl/tls:SSL/TLS是HTTP和TCP之间的中转协议,也是一个应用层协议。我们可以把ssl/tls理解为一个黑盒子,我们把数据丢给http,http把数据丢给ssl/tls,ssl/tls把数据加密后丢给tcp,这就是https。
3、http是明文传输,所以如果报文被劫持,劫持者完全可以读懂报文或修改报文,易被监听、伪装、篡改,是一种不安全的协议。而https是密文传输,它是由http+SSL的结合体,由之前http到tcp,改为了http到SSL到tcp。报文是经过加密的,所以更加安全。https使用需要CA证书,大部分都是付费使用的,http默认使用80端口,https默认使用443端口。
二、HTTP 1/2/3
(1.1)HTTP1.0
a.请求与响应支持 HTTP 头,响应含状态行,增加了状态码,
b.支持 HEAD,POST 方法
c.支持传输 HTML 文件以外其他类型的内容
HTTP1.0 使用的是非持久连接,主要缺点是客户端必须为每一个待请求的对象建立并维护一个新的连接,即每请求一个文档就要有两倍RTT 的开销。因为同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢,而且这种 短连接增加了网络传输的负担。
(1.2)HTTP1.1
a.支持长连接。
b.在HTTP1.0的基础上引入了更多的缓存控制策略。
c.引入了请求范围设置,优化了带宽。
d.在错误通知管理中新增了错误状态响应码。
e.增加了Host头处理,可以传递主机名(hostname)。
(1.3)HTTP 1.x优化(SPDY)
SPDY 并不是新的一种协议,而是在 HTTP 之前做了一层会话层。为了达到减少页面加载时间的目标,SPDY 引入了一个新的二进制分帧数据层,以实现优先次序、最小化及消除不必要的网络延迟,目的是更有效地利用底层 TCP 连接。
多路复用,为多路复用设立了请求优先级。
对header部分进行了压缩。
引入了HTTPS加密传输。
客户端可以在缓存中取到之前请求的内容。
(2)HTTP2.0(SPDY的升级版)
HTTP2.0支持明文传输,而HTTP 1.X强制使用SSL/TLS加密传输。
和HTTP 1.x使用的header压缩方法不同。
HTTP2.0 基于二进制格式进行解析,而HTTP 1.x基于文本格式进行解析。
多路复用,HTTP1.1是多个请求串行化单线程处理,HTTP 2.0是并行执行,一个请求超时并不会影响其他请求。
HTTP2.0的多路复用提升了网页性能:
在 HTTP1 中浏览器限制了同一个域名下的请求数量(Chrome下一般是六个),当在请求很多资源的时候,由于队头阻塞,当浏览器达到最大请求数量时,剩余的资源需等待当前的六个请求完成后才能发起请求。
HTTP2 中引入了多路复用的技术,这个技术可以只通过一个 TCP连接就可以传输所有的请求数据。多路复用可以绕过浏览器限制同一个域名下的请求数量的问题,进而提高了网页的性能。
注意:
主流浏览器只支持基于TLS部署的HTTP2.0协议,所以要将网站升级为HTTP 2.0,就需要先升级为HTTPS。
HTTP 2.0完全兼容HTTP 1.x,所以对于部署了HTTP 2.0的网站可以自动向下兼容HTTP 1.X.
(3)HTTP 3.0 (QUIC)
QUIC (Quick UDP Internet Connections), 快速 UDP 互联网连接。
QUIC是基于UDP协议的。
两个主要特性:
(1)线头阻塞(HOL)问题的解决更为彻底:
基于TCP的HTTP/2,尽管从逻辑上来说,不同的流之间相互独立,不会相互影响,但在实际传输方面,数据还是要一帧一帧的发送和接收,一旦某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输。而基于UDP的QUIC协议则可以更为彻底地解决这样的问题,让不同的流之间真正的实现相互独立传输,互不干扰。
(2)切换网络时的连接保持:
当前移动端的应用环境,用户的网络可能会经常切换,比如从办公室或家里出门,WiFi断开,网络切换为3G或4G。基于TCP的协议,由于切换网络之后,IP会改变,因而之前的连接不可能继续保持。而基于UDP的QUIC协议,则可以内建与TCP中不同的连接标识方法,从而在网络完成切换之后,恢复之前与服务器的连接。
参考链接:https://www.cnblogs.com/fqlGlog/p/11398533.html
https://blog.csdn.net/glpghz/article/details/106063833