在我们浏览互联网的时候,大多数,我们在地址栏中键入地址,都会看到HTTP字样,但是,大家都清楚HTTP是什么吗?HTTP是一种协议,全名叫超文本传输协议。现在,我们针对HTTP协议基础概念进行一下讲解。希望大家都能了解这个WWW的核心协议。
超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议。它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途外,还可以通过扩展它的请求方式,错误代码和报头来完成许多任务。HTTP的一个特点是数据表示方式的典型性和可协商性允许独立于传输数据而建立系统。
在1990年WWW全球信息刚刚起步的时候HTTP就得到了应用。HTTP的***个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的简单协议。由RFC 1945定义的HTTP/1.0进一步完善了这个协议。它允许消息以类似MIME的格式传送,包括有关数据传输的维护信息和关于请求/应答的句法修正。但是,HTTP/1.0没有充分考虑到分层代理,高速缓存的作用以及对稳定连接和虚拟主机的需求。并且随着不完善的进程应用的激增,HTTP/1.0迫切需要一个新的版本,以便使两个通信应用程序能够确定彼此的真实性能。
这里规定的协议叫做“HTTP/1.1".这个协议与HTTP/1.0相比,要求更为严格,以确保各项功能得到可靠实现。
实际的信息系统除了简单的检索外,要求更多的功能性(functionality),包括查找(search),前端更新(front-end update)和注解(annotation)。HTTP允许可扩充的方法集和报头集以指示请求的目的[47]。它是建立在统一资源标识符(URI)[3]提供的地址(URL)[4]和名字(URN)上[20],以指出方法应用于哪个资源的。消息以类似于一种叫做多用途网络邮件扩展(MIME)[7] 的互联网邮件的格式传送。
HTTP也是用于用户代理之间及代理/网关到其他网络系统的通用通信协议,这样的网络系统可能由SMTP,NNTP,FTP,Gopher和WAIS协议支持。这样,HTTP允许不同的应用程序对资源进行基本的超媒体访问。
HTTP协议基础概念——总体操作
HTTP协议是一种请求/应答协议。 与主机建立连接后,客户以请求方法,URI和协议版本的形式向服务器发送请求,继以类MIME信息,其中包括请求修改,客户信息和可能的正文内容。
服务器用包括消息协议版本和成功或错误代码的状态进行应答,继以包括服务器信息,实体维护信息和可能的实体内容的类MIME消息。
大部分的HTTP通信由用户代理引发,由应用到一些原服务器上资源的请求构成。最简单的情形,可以经用户代理(UA)和原服务器(O)之间的单一连接(v)完成。
请求链---->用户代理(UA)-----单一连接(v)----原服务器(O) <----应答链
当一个或一个以上的中介在请求/应答链中出现的时候,会出现更复杂的情形。常见的中介形式有三种:代理,网关和隧道。代理是一种转送工具,它接收绝对形式的URI请求,重写全部或部分消息,然后把重新格式化后的请求发送到URI确定的服务器上。网关是一种接收工具,它充当其他服务器的上层,必要时将请求翻译为下层服务器的协议。隧道不改变消息而充当两个连接之间的中继点;它用于通信需要穿过中介(如防火墙),甚至中介不能理解信息内容的时候。
请求链---->UA-----v-----A-----v-----B-----v-----C-----v-----O <----应答链
显示了用户代理和原服务器之间的三个中介(A,B和C)。游历整条链的请求或应答消息需通过四个独立的连接。这个特性很重要,因为某些HTTP通信选项只能应用于到最近的非隧道邻居,链的终点的连接,或者沿着链的所有连接。图表尽管是线性的,每部分可能都在忙于多路同时通信。例如,B可以接收来自不同于A的许多客户的请求,并且/或者转送到不同于C的服务器,与此同时,它还在处理A的请求。
任何非隧道的通信成员都可以使用内部的高速缓存来处理请求。高速缓存的作用是如果沿着链的一个成员对请求采用了高速缓冲的应答,请求/应答链就会大大缩短。以下图解作为结果产生的链,假定B拥有来自O(通过C)的一个从前应答的备份,请求尚未被UA或A缓存。
请求链---->UA-----v-----A-----v-----B-----C----O <----应答链
并不是所有的应答都能有效地缓存,一些请求可能含有修改量,对缓存动作有特殊的要求。
实际上,目前万维网上有多种结构和配置的高速缓存和代理被实验或使用。这些系统包括节省越洋带宽的全国代理层,广播或多点通信缓存接口, 通过CD-ROM分配子缓存数据的机构,等等。HTTP系统应用在宽频带连接的企业局域网中,通过PDAs的低耗无线连接和断续连接的访问。HTTP1.1的目标是支持各种各样的应用配置,引进协议结构满足那些需要较高可靠性,可以排除故障或至少指示故障的网络应用的要求。
HTTP通信在通常发生在TCP/IP连接上。默认端口是TCP 80,不过其它端口也可以使用。在互联网或其他网络上,这并不妨碍HTTP应用在其他协议的顶端。http仅仅期望可靠的传输;任何提供这种保证的协议都可以使用;协议传输数据单元的HTTP/1.1请求和应答结构的映象已经超出了本说明书的范围。
在http/1.0中,大部分的实现为每个请求/应答交换使用了新连接。而http/1.1中,一个连接可以用于一个或更多请求/应答交换,虽然连接可能会因为各种原因中断。
那么到这里HTTP协议基础概念我们就先讲到这里,之后的一系列文章,希望大家能继续关注。