当我们在浏览器的地址栏输入URL后,信息会被发送到WEB服务器,服务器得到响应,将数据传输回来,展示到WEB页面上,这其中的传输方法就是HTTP协议。

一、HTTP 0.9

发布于1991年,是首个HTTP版本,功能简单。

1
2
3
4
1. 只支持GET请求方法,服务器响应返回的数据格式为,HTML格式的字符串
GET / index.html
2. 不支持请求头,所以内容格式只能是纯文本
3. 无状态性,请求响应后关闭,若有错误,不返回错误码

二、HTTP 1.0

发布于1996年5月,HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用。相对于HTTP 0.9 增加了如下主要特性:

1
2
3
4
5
1. 任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。
2. 除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。
3. HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。
4. 支持长连接(但默认还是使用短连接),缓存机制,以及身份认证。
5. 其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。

1
2
3
GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

三、HTTP 1.1

1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。

1
2
3
4
5
6
1. 持久连接。
2. 管道机制, 同时多个请求。
3. Content-Length 字段,声明数据长度。
4. 分块传输编码,提高效率。
5. 新增了许多动词方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。
6. 客户端头信息增加 host 字段,表示请求的主体域名。

四、HTTP 2

2015年,HTTP/2 发布。它不叫 HTTP/2.0,是因为标准委员会不打算再发布子版本了,下一个新版本将是 HTTP/3。

1
2
3
4
1. 二进制协议
3. 数据流,可以取消请求在不中断TCP连接的情况下,继续被其它请求使用。
4. 头信息压缩
5. websoket全双工通信,可实现服务器推送等。

参考链接

  1. HTTP 协议入门-阮一峰
  2. HTTP协议的前世今生——各版本HTTP协议对比
  3. [图解HTTP协议-上野宣]