当前位置: 附加器 >> 附加器市场 >> HTTP协议的演进过程
目录
HTTP的前世传奇
HTTP协议简介
HTTP请求报文
HTTP响应报文
HTTP连接管理
无状态的HTTP
HTTP与HTTPS
HTTP协议演变
HTTP/0.9
HTTP/1.0
HTTP/1.1
SYPD
HTTP/2
QUIC
HTTP/3.0
相关文章
HTTP的前世传奇
HTTP协议确定之前,伯纳斯-李已经提出了超文本构想,并最终实现了最早期的超文本系统。
年——超文本构想的诞生
年6月至12月间,伯纳斯-李在日内瓦的CERN(欧洲核子研究中心)担任独立承包人。在那段时间里,他提出了一个构想:创建一个以超文本系统为基础的项目,目的是为了方便研究人员分享及更新讯息。
同时他也开发出了最早的原型系统,并命名为ENQUIRE。这个系统允许一个存储信息片断,并以任何方式链接相关的部分。要找到信息,通过从一张纸到另一张纸的链接进行,就像在旧电脑游戏“冒险”中一样。他用它来记录个人和模块的个人记录。它类似于Apple原来为Macintosh制作的应用程序Hypercard。不同的是,查询尽管缺乏花哨的图形,却运行在多用户系统上,并允许许多人访问相同的数据。
就这样,最早的超文本系统原型诞生了(那时候还没有HTTP协议)。也正是因为ENQUIRE系统的经验,为万维网的诞生埋下了一颗坚实的种子。
年——万维网的诞生
年,离开CERN的伯纳斯-李在辗转4年之后又重新回到了CERN。年,伯纳斯-李为了解决CERN的信息访问的问题,他使用与ENQUIRE系统相似的概念来创建万维网。
当时CERN信息访问的存在着很多的问题,也包括了:
人员流动,信息不断丢失?
这个模块在哪里使用?谁写了这段代码?他在哪里工作?关于这个概念的文件有哪些?该项目包括哪些实验室?哪些系统依赖于此设备?什么文件涉及这一个?伯纳斯-李意识到存在的问题后,他写了一份提案试图说服CERN管理层,全球超文本系统是符合CERN的现状并且还是有益的。年的时候,CERN是全欧洲最大的互联网节点。这份提案里面详细的说出了CERN信息访问问题的产生,并且详细的描述了解决方案的演变。并说出了最终的解决方案就是使用超文本系统。
这也第一次提出使用链接资源而非分层系统,而非关键字定位资源。这里的链接资源也就是后面鼎鼎有名的全球网络资源唯一认证的系统,统一资源标识符(URI)。
那为什么伯纳斯-李不用分层系统和关键字定位资源呢。其实他也是有考虑过的,在他写的那份提案里面详细的描述了分层系统和关键字定位资源的存在的问题。主要的问题有:
分层系统的问题:树形结构的问题,使用链接的话没有限制。关键字的问题:两个人从未选择过相同的关键字。这些关键字仅适用于已经熟悉应用程序的人员。
正是出于这些原因,伯纳斯-李第一次建立了一个小型的链接信息系统,但他并没有意识到已经为这个想法创造了一个术语:“超文本”。
最终,在年伯纳斯-李重新开发配置系统后被他的经理麦克·森德尔(MikeSendall)所接受。
伯纳斯-李重新开发配置系统大概的系统就是如图展示的样子。用户通过超文本浏览器通过超文本网关查看数据。
也就是因为这个系统,不仅为HTTP/0.9协议奠定了基础,也诞生了后面大家熟悉的万维网。
HTTP协议诞生
其实说了这么多并没有说明HTTP协议的必要性,为什么需要创造一个新的协议(HTTP协议),难道使用其它协议不行吗?
当时现有的协议涵盖许多不同的任务:
邮件协议允许将单个作者的短暂信息传输给少量收件人。文件传输协议允许根据发送者或接收者的请求传输数据,但在响应端不允许处理数据。新闻协议允许向广泛的受众广播瞬态数据。搜索和检索协议允许进行索引搜索,并允许文档访问。
考虑到很少存在可以根据需要进行扩展的协议,仅有的Z39.50算是一个可行的吧。
HTTP协议必须提供:
文件传输功能的一个子集能够请求索引搜索自动格式协商将客户端引用到另一台服务器的能力
由于很难在原来现有的协议上进行扩展,所以HTTP协议诞生了。
HTTP协议简介
HTTP超文本传输协议(HyperTextTransferProtocol)是当今互联网上应用最为广泛的一种网络协议。所有的WWW(万维网)文件都必须遵守这个标准。HTTP和TCP/IP协议簇中的众多协议一样,用于客户端和服务器端之间的通信。
所谓“超文本”,指的是超越了普通文本的文本,它是文字、图片、视频等的混合体。最关键有「超链接」,能从一个超文本跳转到另外一个超文本。
HTTP协议规定,在两台计算机之间使用HTTP协议进行通信时,在一条通信线路上必定有一端是客户端,另一端则是服务端。当在浏览器中输入网址访问某个网站时,你的浏览器(客户端)会将你的请求封装成一个HTTP请求发送给服务器站点,服务器接收到请求后会组织响应数据封装成一个HTTP响应返回给浏览器。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
HTTP请求报文
HTTP请求报文由3大部分组成:
请求行(必须在HTTP请求报文的第一行)请求头(从第二行开始,到第一个空行结束。请求头和请求体之间存在一个空行)请求体(通常以键值对{key:value}方式传递数据)
请求行开头的POST表示请求访问服务器的类型,称为方法(method)。随后的字符串/form/login指明了请求访问的资源对象,也叫做请求URI(request-URI)。最后的HTTP/1.1即HTTP的版本号,用来提示客户端使用的HTTP协议功能。
综上来看,这段请求的意思就是:请求访问某台HTTP服务器上的/form/login页面资源,并附带参数name=veal、age=37。
注意,无论是HTTP请求报文还是HTTP响应报文,请求头/响应头和请求体/响应体之间都会有一个“空行”,且请求体/响应体并不是必须的。
HTTP请求方法
请求行中的方法的作用在于可以指定请求的资源按照期望产生某种行为,即使用方法给服务器下命令。包括(HTTP1.1):GET、POST、PUT、HEAD、DELETE、OPTIONS、CONNECT、TRACE。当然,我们在开发中最常见也最常使用的就只有前面2个。
HTTP请求头
请求头用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。以下列出常见请求头:
Referer:表示这个请求是从哪个URI跳过来的。比如说通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:baidu.
转载请注明:http://www.aideyishus.com/lkjg/2415.html