HTTP1.0,HTTP1.1与HTTP2.0的区别
HTTP1.0 默认是短链接,可以强制开启长连接。HTTP1.1默认长连接。HTTP2.0采用多路复用。
HTTP1.0:
默认使用短链接,每次请求都需要建立一个TCP连接。它可以设置:Connection: keep-aliva
字段,强制开启长连接。
HTTP1.1:
- 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用。
- 分块传输编码,即服务端每产生一块数据,就发送一块,用“流模式”取代“缓存模式”。
- 管道机制,即在同一个TCP连接里,客户端可以同时发送多个请求。
HTTP2.0:
- 二进制协议。1.1版本的头信息是文本(ASCII编码),数据体可以是文本或者二进制。2.0版本中,头信息和数据体都是二进制。
- 完全多路复用,在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按顺序一一对应。
- 报头压缩,HTTP协议不带有状态,每次请求都必须附上所有信息。HTTP2.0引入了头信息压缩机制,使用gzip或compress压缩后再发送。
- 服务端推送,允许服务器未经请求,主动向客户端发送资源。
HTTP/3
HTTP/3主要有两大变化,传输层基于UDP
,使用QUIC保证UDP可靠性
.
HTTP/2存在的一些问题,比如重传等,都是由于TCP本身的特性导致的。
HTTP/3在QUIC的基础上进行发展而来,QUIC(快速UDP网络连接),底层使用UDP进行数据传输。
HTTP/3的特点:
- 使用UDP作为传输层通信
- 在UDP的基础上,QUIC协议保证了HTTP/3的安全性,在传输的过程中就完成了TSL加密握手。
- HTTPS要建立一个连接,得进行6次握手,先建立3握手,然后再进行TLS/1.3的3握手。QUIC直接把以往的TCP和TLS/1.3的6次握手合并成了3次,减少了交互次数。
- QUIC有自己的一套机制可以保证传输的可靠性。当某个流发生丢包时,只会阻塞这个流,其他流不受影响。
笔者自己的吐槽:这几天没有更新算法题部分,但还是一直在做,不过来不及写emmmmm…今天花了9块在抖音买了个视频看,还是挺不错的。感觉有收获。褪黑素起作用了,就这样吧~