最近背八股文遇到有关HTTP的东西有点难受,虽然好像都学过,但是很混乱,秉着学习应该系统学习的心态以及对八股文的反感,所以我准备系统学习一下。
强烈安利极客的透视HTTP协议专栏啊!!!!链接赋在最后了。
HTTP的发展得力于用户的需求。
HTTP0.9
由于早期互联网世界计算机处理能力低,存储量小,网速发展也蛮,HTTP的设计特别简单:只允许用户使用GET
请求HTML文档,并且在响应请求之后立即关闭链接,功能十分有限。
HTTP1.0
接下来的时代里,由于信息越来越多样化,如出现了JPEG图像格式、MP3音乐格式等,且越来越多的人开始使用互联网,大家便不再满足于HTTP0.9了,提出了改进意见。
于是HTTP 1.0是HTTP 0.9的增强版本:
- 增加了
HEAD、POST
请求; - 增加了响应码,标记可能的错误原因;
- 引入了协议版本号概念(即用的是哪个版本的
HTTP
请求); - 引入了
HTTP Header
的概念,让HTTP
处理请求和响应更加灵活; - 传输的数据不再限于文本。
HTTP1.1
当年的浏览器大战(网景的 Netscape Navigator 和微软的 Internet Explorer )推动了HTTP的发展。
- 增加了
PUT、DELETE
等方法; - 增加了缓存管理和控制;
- 明确了链接管理,允许持久链接;
- 允许响应数据分块,利于传输大文件;
- 强制要求HOST头,主要用来实现虚拟主机技术。
HTTP 2
HTTP1.1发布之后,互联网呈现除了爆发式的增长,但是其中还是产生了一些不满,比如链接慢,无法跟上迅猛发展的时代。这时,谷歌浏览器“揭竿而起”,结合自家开发的SPDY 协议,对HTTP协议进行优化:
- 二进制协议,不再是纯文本了;
- 可以发起多个请求,之前是一个TCP链接只能发起一个请求;
- 使用专用算法压缩头部,减少数据传输量;
- 允许服务器主动向客户端推送数据;
- 增强了安全性。
不过由于由于 HTTP/1.1 实在是太过经典和强势,目前HTTP 2的普及率还比较低。
HTTP 3
在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫做 QUIC。2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段,也许两三年后就会正式发布,到时候我们很可能会跳过 HTTP/2 直接进入 HTTP/3。