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