前言
说到http协议,相信大家也都不陌生。毕竟是跟工作息息相关的,想着好好深入一下,正好看到了罗老师的《透视HTTP协议》,也算是说透了揉碎了,讲的明明白白。下面就里面的内容做了这篇学习总结
开始之前先抛出几个问题:
-
是什么在促进HTTP的发展?
-
post请求是什么样的?
-
缓存在浏览器network中的体现?
-
HTTP的大文件传输?一切都在发展,想想更好的方案
-
HTTP协议跟TCP/IP协议栈的关系
下面就开始唠了~~~
2HTTP 发展史
http发展史
HTTP 的发展历程
HTTP/0.9(90年代初)
受限于当时的大环境,只支持get的纯文本传输,后定义为HTTP/0.9 --- 是小范围的试炼
-
get纯文本数据的传输
HTTP/1.0(93年)
得益于jpeg及mp3等数据格式的问世,用户期待图文并茂的网页 --- 小有成就
-
增加了 HEAD、POST 等新方法;
-
增加了响应状态码,标记可能的错误原因;
-
引入了协议版本号概念;
-
引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活;
-
传输的数据不再仅限于文本。
HTTP/1.1(99年)
经历了第一次浏览器大战的HTTP/1.0扛住压力,推动了http的进一步完善。--- 破茧成蝶,正式成为标准(RFC 2616)
-
增加了 PUT、DELETE 等新的方法;
-
增加了缓存管理和控制;
-
明确了连接管理,允许持久连接;
-
允许响应数据分块(chunked),利于传输大文件;
-
强制要求 Host 头,让互联网主机托管成为可能。
不过由于 HTTP/1.1 太过庞大和复杂,所以在 2014 年又做了一次修订,原来的一个大文档被拆分成了六份较小的文档,编号为 7230-7235,优化了一些细节,但此外没有任何实质性的改动。
更上一层楼,HTTP/2(2015年)
“挟用户以号令天下”,Google 借此顺势把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2,RFC 编号 7540。
-
二进制协议,不再是纯文本;
-
可发起多个请求,废弃了 1.1 里的管道;
-
使用专用算法压缩头部,减少数据传输量;
-
允许服务器主动向客户端推送数据;
-
增强了安全性,“事实上”要求加密通信。
追求极致,HTTP/3
这一次还是Google,而且它要“革自己的命”。2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段。
结合发展史的总结
-
从无到有
-
从简单到复杂
-
从实现到不断的优化扩展
-
从无人知晓到无人不晓
-
追求安全、高速、便捷的传输
综上,大家可以思考下第一个问题了,你觉得呢? 有兴趣的可以去看参考资料里的协议详解。
3HTTP 的报文
客户端
请求行 GET / HTTP