HTTP协议有哪些版本?各有什么区别?

HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写,是互联网上应用最为广泛的一种通信协议。

HTTP协议有以下主要特征:

  1. 基于TCP/IP协议,用于从WWW服务器传输超文本到本地浏览器。
  2. 简单轻量:HTTP协议开销很小,请求响应都很短小。
  3. 无状态:HTTP协议是无状态的,每次请求响应都独立的。
  4. 支持多种数据格式:支持浏览器可理解的数据格式如:HTML, JSON, XML等。

HTTP协议主要有1.0,1.1,2.0三个版本:

HTTP/1.0:

  1. 0.9版本,第一次定义HTTP基本功能。
  2. 1.0版本,增加内容类型信息。定义了GET、POST、HEAD等方法。

HTTP/1.1:

  1. 增加Host请求头,支持同时连接多个主机。
  2. 新增缓存处理机制。
  3. 增加Range请求头,支持断点续传。
  4. 增加PUT和DELETE方法。
  5. 增加流水线的概念,支持在同一个TCP连接上发起多个请求。

HTTP/2.0:

  1. 二进制协议,更高效。
  2. 全双工:客户端和服务器之间可以同时发送数据。
  3. 数据流:可以在一个连接中交替使用多个流进行数据传输。
  4. 首部压缩:发送相同的首部只发送一次。
  5. 服务端推送:服务器可以在客户端请求时主动推送数据。

示例:
HTTP/1.1请求:

http
GET /index.html HTTP/1.1
Host: www.example.com
HTTP/2.0请求:
http
POST /comments HTTP/2
Host: www.example.com
Content-Length: 44

{
  "comment": "Hello World!"
}