分享

HTTP协议(RFC中文版)-1.介绍 - shen.falcon

 zybingliu 2008-05-01
HTTP协议(RFC中文版)-1.介绍

1.  介绍(Introduction
1.1 
目的(Purpose
 HTTP
Hypertext Transfer Protocol)是应用级协议,它适应了分布式超媒体协作系统对
灵活性及速度的要求。它是一个一般的、无状态的、基于对象的协议,通过对其请求方法
request methods)进行扩展,可以被用于多种用途,比如命名服务器(name server)及分
布式对象管理系统。HTTP的一个特性是其数据表现类型允许系统的构建不再依赖于要传输
的数据。
 HTTP
自从1990年就在WWW上被广泛使用。该规范反映了“HTTP/1.0”的普通用法。
 
该规范描述了在大多数HTTP/1.0客户机及服务器上看起来已经实现的特性。规范将被
分成两个部分:HTTP特性的实现是本文档的主要内容,而其它不太通行的实现将被列在附
D中。
 
实用的信息系统需要更多的功能,而不仅仅是数据的获取,包括搜索、前端更新及注解。
HTTP
允许使用开放的命令集来表示请求的目的,它使用基于URI[2]Uniform Resource
Identifier
),即统一资源标识的规则来定位(URL[4])或命名(URN[16])方法所用到的资
源。HTTP使用与邮件(Internet Mail [7])和MIMEMultipurpose Internet Mail Extensions [5]
相似的格式来传递消息。
 HTTP
也作为用户代理、代理服务器/网关与其它Internet协议进行通讯的一般协议,这
些协议是,SMTP [12], NNTP [11], FTP [14], Gopher [1], and WAIS [8]等。HTTP允许不同的
应用可以进行基本的超媒体资源访问,并简化用户代理的实现。

1.2  术语(Terminology
 
本规范用了许多与参与方、对象及HTTP通讯相关的术语,如下:
连接(connection
 
两个应用程序以通讯为目的在传输层建立虚拟电路。
消息(message
HTTP
通讯的基本单元,在连接中传输的结构化的、有顺序的字节(其含义在第四
节中定义)。

请求(request
  HTTP
的请求消息(在第五节定义)
回应(response
  HTTP
的回应消息(在第六节定义)
资源(resource
 
网络上可以用URI来标识的数据对象或服务(见3.2节)
 
实体(entity
可被附在请求或回应消息中的特殊的表示法、数据资源的表示、服务资源的回应等,
由实体标题(entity header)或实体主体(entity body)内容形式存在的元信息组成。
客户端(client
 
指以发出请求为目的而建立连接的应用程序。
用户代理(user agent
指初始化请求的客户端,如浏览器、编辑器、蜘蛛(web爬行机器人)或其它终端
用户工具。
服务器(server
 
指接受连接,并通过发送回应来响应服务请求的应用程序。
原始服务器(origin server
 
存放资源或产生资源的服务器。
代理(proxy
同时扮演服务器及客户端角色的中间程序,用来为其它客户产生请求。请求经过变
换,被传递到最终的目的服务器,在代理程序内部,请求或被处理,或被传递。代
理必须在消息转发前对消息进行解释,而且如有必要还得重写消息。代理通常被用
作经过防火墙的客户端出口,用以辅助处理用户代理所没实现的请求。
网关(gateway
服务器之间的服务器。与代理不同,网关接受请求就好象它就是被请求资源所在的
原始服务器,发出请求的客户端可能并没有意识到它在与网关进行通讯。网关是网
络防火墙服务器端的门户。对非HTTP系统资源进行访问时,网关做为中间的协议
翻译者。
隧道(tunnel
隧道就好象连接两端看不见的中继器。处于激活状态时,它虽然是由HTTP请求来
初始化的,但它并不参与HTTP通讯。当需要中继连接的两端关闭后,隧道也自然
终止。在入口有需求及中间程序无法或不该解释要中继的通讯时,通常要用到隧道
技术。
缓存(cache
 
指程序本地存储的回应消息和用来控制消息存储、重获、删除的子系统。

缓存回应的目的是为减少请求回应时间,以及未来一段时间对网络带宽的消耗。任
何客户端及服务端都可以包含缓存。服务器在以隧道方式工作时不能使用缓存。
 
任何指定的程序都有能力同时做为客户端和服务器。我们在使用这个概念时,不是看程
序功能上是否能实现客户及服务器,而是看程序在特定连接时段上扮演何种角色(客户或服
务器)。同样,任何服务器可以扮演原始服务器、代理、网关、隧道等角色,行为的切换取
决于每次请求的内容。

1.3  概述(Overall Operation
 HTTP
协议是基于请求/回应机制的。客户端与服务器端建立连接后,以请求方法、URI
协议版本等方式向服务器端发出请求,该请求可跟随包含请求修饰符、客户信息、及可能的
请求体(body)内容的MIME类型消息。

 服务器端通过状态队列(status line)来回应,内容包括消息的协议版本、成功或错误代
码,也跟随着包含服务器信息、实体元信息及实体内容的MIME类型消息。
 
绝大多数HTTP通讯由用户代理进行初始化,并通过它来组装请求以获取存储在一些原
始服务器上的资源。在最简单的情况下,通过用户代理(UA)与原始服务器(O)之间一
个简单的连接(v)就可以完成。

          request chain ------------------------>
       UA -------------------v------------------- O
          <----------------------- response chain

 更复杂的情况是当请求/回应链之间存在一个或更多中间环节。总体看来,有三种中间
环节:代理(proxy)、网关(gateway)、隧道(tunnel)。
代理(proxy)是向前推送的代理人(agent),它以绝对形式接收URI请求,重写全部
或部分消息,并将经过改写的请求继续向URI中指定的服务器处推送。
网关是接收代理,它处于服务器层之上,在必要时候,它用服务器可识别的协议来传递
请求。
隧道不改变消息,它只是连接两端的中继点。在有中间层(如防火墙)或中间层无法解
析消息内容的情况下,需要靠隧道技术来帮助通讯穿越中间层。

           request chain -------------------------------------->
       UA -----v----- A -----v----- B -----v----- C -----v----- O
           <------------------------------------- response chain

 上面的图形表示在用户代理和原始服务器之间有三个中间层(ABC)。由图可见,
请求或回应消息在整个信息链上运行需要通过四个单独的连接,它与在此之前介绍的简单情
况是有区别的,而且此区别是十分重要的。因为HTTP通讯选项可以设置成几种情况,如只
与最近的非隧道邻居连接、只与信息链末端连接、或者可与链中全部环节连接等等。虽然上
面的图是线性的,而实际上每个参与环节都在同时与多方进行通讯活动。例如,B在接受除
A
之外其它客户端请求的同时,向除C之外的其它服务器推送请求,在这个时刻,它可能
接受到A的请求,并给予处理。
 
参与通讯的任何一方如果没有以隧道方式进行工作,必须要借助内部缓存机制来处理请
求,如果链上某个参与方碰巧缓存了某个请求的回应,那就相应于缩短了请求/回应链。下
面的图例演示了当B缓存了从O经由C过来的回应信息,而UAA没缓存的情况:

 

          request chain ---------->
       UA -----v----- A -----v----- B - - - - - - C - - - - - - O
          <--------- response chain

 并非所有的回应都可以被缓存,某些请求所包含的修饰符中可能对缓存行为进行了特别
指明。一些基于HTTP/1.0的应用使用了启发式的方法来描述哪些回应可被缓存,而哪些则
不可以,但遗憾的是,这些规则并没有形成标准。
 
Internet上,HTTP通讯往往基于TCP/IP的连接方式。缺省的端口是TCP 80[15]口,
但也可以使用其它端口。并不排除基于Ineternet上的其它协议或网络协议的HTTP实现方
式,HTTP只是假定传输是可靠的,因而任何能提供这种保证的协议都可以被使用。至于
HTTP/1.0
请求和回应在数据传输过程中的数据结构问题,不在本文讨论范围之内。
 
实验室应用除外,当前的做法是客户端在每次请求之前建立连接,而服务器端在发送回
应后关闭此连接。不管客户端还是服务器端都应注意处理突发的连接中断,因为双方都有可
能因为用户操作、自动超时、程序失败等原因关闭与对方的连接。在这种情况下,不管请求
处于什么样的状绲シ交蛩酵惫乇樟樱蓟岬贾碌鼻暗那肭蟊恢罩埂?
1.4  HTTP and MIME
 HTTP/1.0
使用了多种结构来定义MIME,详见RFC1521[5]。附录C描述了Internet
认的Internet介质类型与mail介质类型的不同工作方式,并给出二者区别的基本解释。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多