参考链接
- w3c:https://www.w3.org/Protocols/
- ietf:https://tools.ietf.org/html/rfc2616
- 阮一峰 http://www.ruanyifeng.com/blog/2016/08/http.html
- wiki: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
一 、Http的历史版本
HTTP 各版本发布时间
Year HTTP Version
1991 0.9
1996 1.0
1997 1.1
2015 2
目前使用最广泛的HTTP版本是1.1. RFC文档为:rfc2616
二、Http各版本差异
这点阮一峰的博客里面讲的比较详细,有需要详细了解的可以到阮一峰博客阅读:
HTTP 协议入门 - 阮一峰
- 0.9 版 只有一个 Get 方法,且服务器只能传回 HTML格式字符串。
- 1.0 版本增加了 POST 和 HEAD 方法,传输的类型增加了:图像,视频,二进制文件。
- 1.1 版本主要改进为:持久链接(keep-alive),管道机制,Content-Length,分块传输等。增加了PUT,DELETE等方法。
- 2 版本 在 1.1的持久链接的基础上,增加了多工。头信息和数据体都是二进制。数据包不按顺序发送个,需要做标记。还有
对我们开发很方便的一个改进是,增加了服务器推送。(听着和websocket挺像)
三、IETF 和 RFC
IETF: The Internet Engineering Task Force,互联网工程任务组 RFC: Request For Comments,意见征求稿
IETF是由各互联网专家自发参与和管理的国际民间机构,负责互联网基础标准的研发和制定。标准制定后,会通过RFC的形式对外发布。RFC2616是Http1.1的最新规范。我们熟知的httpclient和okhttp的实现,也是按照RFC2616的标准来实现。如果我们想认真学习http的知识,也可以时常把rfc2616拿来读一读。但并不是每个http的实现都严格按照标准。
另外,还有一个组织叫W3C,大家肯定听说过。W3C同样是一个互联网相关标准的研发、制定、推广的国际民间组织。刚开始成立时,W3C和IETF的一些工作内容是重合的,后来便各负其责,分别负责不通的领域,比如IETF把html相关的标准制定交给了W3C,而W3C应该也不会再参与Http相关标准的制定,尽管其创始人Tim Berners-Lee发明了互联网。