HTTP简介

前言

HTTP是互联网上最普遍采用的一种应用协议,是现代WEB的基础。随着技术的不断发展,HTTP几乎成为了所有互联网软件和硬件应用的协议。本文大致讲述一下HTTP协议的发展历程。

http 0.9

1991年,Tim Berners-Lee概述了这个新协议的动机,并罗列了几条宏观的设计目标:支持文件传输、能够请求对超文本文档的索引搜索、格式化协商机制,以及能把客户端引导至不同的服务器。最初的HTTP建议是以简洁为出发点设计的,它最终实现了如下功能:

  • 客户端/服务器、请求/响应协议;
  • ASCII协议,运行于TCP/IP链接之上;
  • 设计用来传输HTML;
  • 服务器与客户端之间的连接在每次请求之后都会关闭。

http 1.0

1991年到1995年,HTML规范和WEB浏览器都得到了快速发展。随着人们对新兴的WEB的需求越来越多,以及它们在公共WEB上的应用迅速爆发,HTTP 0.9慢慢的不能满足现实需要。人们需要一种新协议,它不仅可以访问HTML文档,还能提供有关请求和响应的各种元数据,而且需要支持内容协商等。在一些实验性改进的基础上,HTTP工作组于1996年公布了RFC1945--解释说明了当时很多HTTP1.0实现的“公用方法”,包括媒体类型协商、内容编码、字符集支持、多部分类型、认证、缓存、代理行为、日期格式等。RFC1945也只是参考性的,并不是一个正式的规范或者标准。示例如下:

该协议有如下新的变化:

  • 请求可以由于多行首部字段构成;
  • 响应对象前面添加了一个响应状态行;
  • 响应对象也有自己的由换行符分隔的首部字段;
  • 响应对象不局限于超文本;
  • 服务器与客户端之间的连接在每次请求之后都会关闭

请求和响应头部都使用ASCII编码,但响应对象可以是任何数据类型,如:HTML文件、纯文本文件、图片等。此时的HTTP协议并不再局限于请求HTML文件了,已成为超媒体传输协议,但一直沿用最初的名字。

http 1x

将HTTP转为IETF正式互联网标准的工作与RFC1945的制定并行展开,相继发布了RFC2068和RFC2616两个HTTP1.1标准。HTTP1.1标准厘清了之前版本中很多有歧义的地方,而且还新增了很多重要的优化,如持久连接、分块编码传输、字节规范请求、增强的缓存机制、传输编码及请求管道等。

示例如下:

  • 1.请求HTML文件及其编码、字符集和元数据;
  • 2.对原始HTML请求的分块响应;
  • 3.以ASCII十六进制数字表示的分块数据的字节数(256字节);
  • 4.分块数据流响应结束。

  • 5.在同一个TCP连接上请求图标文件;
  • 6.通知服务器不再使用连接了;
  • 7.图标响应,随后关闭连接。

 从上例可知,两次请求共用了同一个连接。HTTP1.1的连接一经打开,默认情况下是持久连接,除非主动关闭连接。在HTTP1.0里可以通过Connection:Keep-Alive首部来启用持久连接。

http 2.0

 RFC2616发布以来,一直是互联网发展的基石。HTTP协议也成为了可以在任何领域使用的核心协议,基于这个协议人们设计和部署了越来越多的应用。HTTP的简单本质是其快速发展的关键,但随着越来越多的应用被部署到WEB上,HTTP的问题慢慢凸显出来。今天,用户和开发者都迫切需要通过THHP1.1达到一种几近实时的响应速度和协议性能,而要满足这个需求,只在原有协议上进行修补是不够的。

为了应对这些挑战,HTTP必须继续发展。HTTP工作组已经在2012年宣布要设计和开发HTTP2.0。HTTP2.0的主要目标是改进传输性能,实现低延迟和高吞吐量。关于HTTP2.0的详细介绍将在以后的文章中进行讲述。

原文地址:https://www.cnblogs.com/syfwhu/p/5219823.html