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

一、HTTP 0.9

  • 发布于1991年,是首个HTTP版本,功能简单。
  1. 只支持GET请求方法,服务器响应返回的数据格式为,HTML格式的字符串;
GET / index.html
  1. 不支持请求头,所以内容格式只能是纯文本;
  2. 无状态性,请求响应后关闭,若有错误,不返回错误码;

二、HTTP 1.0

  • 发布于1996年5月,HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用。相对于HTTP 0.9 增加了如下主要特性:
  1. 任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。

  2. 除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。

  3. HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

  4. 支持长连接(但默认还是使用短连接),缓存机制,以及身份认证。

  5. 其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。

    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. Content-Length 字段,声明数据长度。
  4. 分块传输编码,提高效率。
  5. 新增了许多动词方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。
  6. 客户端头信息增加 host 字段,表示请求的主体域名。

四、HTTP 2

  • 2015年,HTTP/2 发布。它不叫 HTTP/2.0,是因为标准委员会不打算再发布子版本了,下一个新版本将是 HTTP/3。
  1. 二进制协议
  2. 数据流,可以取消请求在不中断TCP连接的情况下,继续被其它请求使用。
  3. 头信息压缩
  4. websoket全双工通信,可实现服务器推送等。

参考链接

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

最新文章

  1. TypeScript - Interfaces
  2. phpcms数据库操作
  3. JavaScript中的各种小坑汇总
  4. MySQL 安装 启动命令总结
  5. HDOJ/HDU 1075 What Are You Talking About(字符串查找翻译~Map)
  6. slf4j 之logback日志之sl4j架构【二】
  7. spring与mybatis(oracle)整合
  8. bzoj 3166 可持久化Tire
  9. spring boot 如何添加拦截
  10. POJ 2752 Seek the Name, Seek the Fame(next数组运用)
  11. 【lg1799】数列
  12. jenkins发版脚本更新
  13. centos 6.9安装mysql
  14. FileReader读取中文txt文件编码丢失问题(乱码)(转)
  15. spring Ioc 实践
  16. 淡入淡出(折叠效果)and点击切换背景图片
  17. JavaWeb 服务启动时,在后台启动加载一个线程
  18. Hibernate笔记①--myeclipse制动配置hibernate
  19. OpenShift上部署Redis主从集群
  20. Windows系统变量列表

热门文章

  1. PatentTips - Fast awake from low power mode
  2. phpStudy的localhost不能访问怎么解决(相关性)
  3. ie7easyui的书写要规范
  4. [React Native] Installing and Linking Modules with Native Code in React Native
  5. amazeui时间组件测试
  6. 简洁常用权限系统的设计与实现(四):不维护level,用递归方式构造树
  7. 【t007】棋盘放置指南车问题
  8. 【a402】十进制数转换为八进制数
  9. sqoop 1.4.7 安装配置/连接测试
  10. ubuntu 16.0.4 中docker 部署 sqlserver 2017(四)