目录
HTTP1.0和HTTP1.1的区别
1.持久连接:
HTTP/1.1 默认支持持久连接,允许在一个TCP连接上发送多个HTTP请求和响应,减少了连接建立和关闭的开销。而HTTP/1.0 默认为短连接,每次请求都需要建立一个TCP连接,并通过Connection:keep-alive头来实现持久连接。
2.管道化:
HTTP/1.1 支持管道化(不是默认开启),允许客户端在第一个请求的响应到达之前发送多个请求,这可以减少等待时间,提高效率。HTTP/1.0 支持管道化。
3.缓存控制:
HTTP/1.0 主要使用 If - Modified - Since/Expires 来作为缓存判断的标准,而HTTP/1.1 则引入了更多的缓存控制策略例如Etag / If - Nonde - Match等更多可提供选择的缓存头来控制缓存策略。
4.错误处理:
HTTP/1.1 增加了一些新的HTTP状态码,如100 Continue,用于增强信号处理和请求的中间响应。
5.Host头:
HTTP/1.1 引入了Host头,允许客户端指定请求的主机名,这使得在同一台服务器上托管多个域名成为可能。HTTP/1.0 没有这个头字段。
6.带宽优化:
HTTP/1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,而HTTP1.1 则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content)
HTTP2.0 与 HTTP1.1的区别
1.二进制协议:
HTTP/2.0 采用二进制格式传输数据,而非HTTP/1.1 的文本格式,使得解析更高效,减少了解析时间。
2.多路复用:
HTTP/2.0 支持多路复用,允许在单个TCP连接上并行交错发送多个请求和响应,解决了HTTP/1.1中的队头阻塞问题。
3.头部压缩:
HTTP/2.0 引入了 HPACK 压缩算法,对请求和响应的头部信息进行压缩,减少了冗余头部信息的传输,提高了传输效率。
4.服务器推送:
HTTP/2.0 允许服务器主动推送资源给客户端,而不需要客户端明确请求,这可以减少页面加载时间。
5.优先级和依赖:
HTTP/2.0 允许客户端为请求设置优先级,并表达请求之间的依赖关系,资源加载更加有序。
HTTP3.0的了解
HTTP/3.0 是HTTP协议的最新版本,它基于QUIC协议,具有以下特点:
1.无队头阻塞:
QUIC 使用UDP协议来传输数据。一个连接上的多个stream之间没有依赖,如果一个stream丢一个UDP包,不会影响后面的stream,不存在队头阻塞问题。
2.零RTT连接建立:
QUIC 允许在首次连接时进行零往返时间连接建立,从而减少了连接延迟,加快了页面加载速度。
3.连接迁移:
QUIC 允许在网络切换(如从 Wi - Fi到移动网络)时,将连接迁移到新的IP地址,从而减少连接的中断时间。
4.向前纠错机制:
每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通过其他包的冗余数据直接组装而无需重传。向前纠错牺牲了每个数据包可以发送数据的上限,但是减少了因为丢包导致的数据重传。
5.安全性:
HTTP/3.0 默认使用TLS加密,确保了数据传输的安全性。