面试中关于HTTP 2.0的面试题并不多,但基于HTTP 2.0的应用已经很多了,比如谷歌的gRPC框架就是基于HTTP 2.0来提升效率的。同时,HTTP 1.0中的存在的很多缺陷也都在HTTP 2.0中得到了解决。
所以,如果你在面试中脱颖而出,同时,在实践中更好的理解类似gRPC这类框架的实现,了解HTTP 2.0还是非常必要的。而且HTTP 2.0也在很多场景下逐步替代HTTP 1.0。
HTTP 1.0存在的问题
了解过HTTP 1.0的协议实现之后,会发现它存在不少问题。
问题一:TCP连接数限制。为了避免网络拥堵,占用过多的CPU和内存。因此,不同的浏览器会限制TCP连接的数量。
问题二:队头阻塞问题。队头阻塞(Head Of Line Blocking),每个TCP同时只能处理一个HTTP请求,浏览器遵循FIFO原则,如果上一个没返回后续请求会被阻塞。
虽然提出了管道化(Pipelining)方案,但依旧存在诸多问题。比如,第一个响应慢还是会阻塞后续响应;服务器为了按序返回需要缓存多个响应,占用更多资源;浏览器中途断连重试服务器可能得重新处理多个请求;还有必须客户端 - 代理 - 服务器都支持管线化。
问题三:Header内容过多,每次都需重复发送,没有相应的压缩传输优化方案;
问题四:为了减少请求数,需做文件合并等优化工作,但同时会增加单个请求的延迟;
问题五:明文传输不安全;
HTTP 2.0的出现
针对HTTP 1.0的问题,RFC 7540定义了HTTP 2.0的协议规范和细节。HTTP 2.0的实现是基于SPDY协议的一些标准来实现的。
HTTP 2.0提供了:二进制分帧、首部压缩、多路复用、请求优先级、服务器推送等优化。
HTTP 2.0是在SPDY(An experimental protocol for a faster web, The Chromium Projects)基础上形成的下一代互联网通信协议。HTTP/2 的目的是通过支持请求与响应的多路复用来较少延迟,通过压缩HTTPS首部字段将协议开销降低,同时增加请求优先级和服务器端推送的支持。
什么是SPDY协议
SPDY是Google开发的基于TCP协议的应用层协议。目标是优化HTTP协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。协议的核心思想是尽量减少TCP连接数。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。
互联网工程任务组ÿ