Http协议学习之二

Http协议学习之二


今天主要是对Http的摘要进行翻译和学习。
1.1 目的
文章首先介绍了Http协议的目的。Http协议是为分发、协商、多媒体信息系统的应用层协议。从1990年起http就被万维网全球信息所倡议使用。Http的第一个版本被称作“HTTP/0.9”,这是一个为通过Inter网传输未经加工的数据的简单协议。HTTP/1.0被RFC1945所定义,改善了协议允许消息采用MIME-Like消息格式,包含数据传输的元信息和请求/回复语义修改器。(说实话,读到这里上面这句话还不是很明白是什么意思,也许通过后面的学习会理解。)然而,HTTP/1.0没有充分的考虑多层级的代理,缓存,持久连接的需要,和虚拟主机的影响。另外,涌现的未完成实现的应用程序都称他们自己是“HTTP/1.0”,通过变更协议版本才能使两个应用程序确定他们自己互相的真实能力已经成为必要。

这篇操作说明定义的协议称作“HTTP/1.1”.这个协议包含了比HTTP/1.0更多的严格的需求,为了确保他的特性能可靠的实现。

真实的信息系统需要比简单的检索更多的功能,包含搜索,前端更新和注释。HTTP允许一组无限制的方法集合来表明请求的目的。他建立在URI提供的应用规则之上,作为URL或者URN,用于表明应用方法的资源。通过的消息类似于一种被MIME所定义的互联网邮件所使用的格式。

HTTP也被用作用户代理和代理/网关到别的互联网系统之间通讯的通用的协议,包括SMTP,NNTP,FTP,Gopher和WAIS协议所支持。(NNTP,Gopher和WAIS这三个协议我也没听过是,知道的同学吱一下。)通过这种方式,HTTP允许基本的多媒体访问来自于不同应用程序的可用的资源。

1.2 需求?必要条件?
这篇说明书使用了RFC1123中相同的单次来定义的每种特别需求的重要性。这些单词是:
MUST
这个单词或者“required”形容词意思是这个项目是说明的一个绝对要求。
SHOULD
这个单词或者形容词“recommended”意思是那里可能在特定的条件下存在有效的原因来忽略这个项目,但是在做选择之前需要完全理解含义并仔细考虑例子。
MAY
这个单词或者形容词“optional”意思是这个项目是真实可选的。一个卖主可能选择包含这个项目因为一个特殊的市场需要他或者他能增强产品;另一个卖主可能删除他。

一个实现如果他没有满足一个或者多个协议实现的必要条件,那么他就是不符合要求的;一个协议满足所有的MUST和所有的SHOULD协议的必要条件,那么他可以说是“无条件符合”;一个实现满足了协议的所有的MUST必要条件,但没有满足所有的SHOULD必要条件,那可以说是“有条件符合”。

1.3Terminology(专用术语)
这篇说明使用了一定数量的术语来称作特定参与的角色,对象,HTTP通讯。
connection
一个由两个程序以通讯为目的而建立的虚拟环路。
message
HTTP通讯的基本单位,由字节序列(可以在第4章查找)所组成的结构并通过连接进行传输。
request
一个HTTP的请求消息,在第5章中定义。
response
一个HTTP回复消息,在第6章中定义。
resource
一个能通过URI被身份认证的网络数据对象或者服务(在3.2章中定义)。资源可能有所有表现形式或其他不同的方式所获得。
entity
信息作为一个请求或者回复的负载进行传输。一个实体由实体头字段表单中的主信息和一个实体体表单中的内容所组成,在第7章中有描述。
representation
一个包含回复的实体需要进行内容协商,在12章中描述。那里可能存在多个表现形式关联一个特殊的回复状态。
content negotiation
当服务一个请求时选择合适的展现的机制方法在12章有描述。任何回复中的实体表现都能够被协商(包括错误的回复)。
variant
在任何给定的时刻,一个资源都可能有1个或者多个和他有关系的表现。每一个表现都被称为一个“变种(Variant)”。“变种”一词的使用不需要表明资源正处于内容协商中。
client
以发送请求为目的所建立连接的程序。
user agent
初始化一个请求的客户端。他们经常是浏览器,编辑器,网络爬虫(web遍历机器人),或者是其他用户工具终端。
server
一个接受连接为了服务请求并发回回复的应用程序。任何给定的程序可能同时有客户端和服务端的能力;我们使用的这些词语仅称作为一个被特定连接的程序所执行的角色,而不是一般程序的能力。同样的,任何服务都可能担任一个源服务,代理,网关,或者隧道的角色,转换基于每个请求性质的行为。
origin server
一个给定资源所在的或者被创建的服务器。
proxy
以代表另一个客户端发出请求为目的的同时作为服务器和客户端的中间程序。请求通过内部处理或通过他们,可能会进行转换,到另一个服务器。一个代理必须同在客户端和服务端同时实现这个说明的要求。
gateway
一个充当一些别的服务中间人的服务。不像代理,一个网关收取请求好像他是被请求资源的源服务器一样;正在请求的客户端可能不知道他正在和网关通讯。
tunnel
在两个连接中充当盲中继的中间程序。一旦激活,隧道并不会视作HTTP通讯的一部分,尽管隧道可能会被HTTP请求初始化。当隧道两端的中继连接关闭时,隧道将会不存在。
cache
一个回复消息的程序的本地存储并且这个子系统控制他自己的消息存储,检索和删除。一个缓存仓库能够换出回复为了减少回复的时间和未来网络带宽的消耗,请求也是一样。任何客户端或服务器可能包含一个缓存,尽管缓存不能够被充当隧道的服务器所使用。
cachable
如果一个缓存被允许存储回复消息的副本用来回答随后的请求,那么这个回复是可缓存的。决定HTTP回复缓存能力的规则在第13章中有定义。( Even if a resource is cachable, there may
be additional constraints on whether a cache can use the cached
copy for a particular request.甚至如果一个资源可以能够缓存,那可能会增加是否可以缓存一个特殊请求的缓存的约束。)这句话不是很理解,有能解释的同学吗?
first-hand
一个回复如果他来自直连,那么他就是第一手的并且没有从源服务器不必要的延时,可能会通过1个或多个代理。一个回复如果他已经被源服务器刚刚直接检查有效的,那么他也是第一手的。
explicit expiration time
源服务器打算没有进一步校验的情况下,缓存不在返回一个实体的时间。
heuristic expiration time
当没有明确的过期时间可获得时,过期时间会被缓存所分配。
age
一个回复的时期是从他被源服务器发送到或成功验证的时间。
freshness lifetime
一个回复的生成和到过期时间之间的时间段。
fresh
回复还是新鲜的当他的时期还没有超出他的生命周期。
stale
一个回复是不新鲜的,当他的时期已经超出了他的生命周期
semantically transparent
当缓存使用既不影响请求客户端也不影响源服务器,那缓存在“语义透明”中表现关于特殊回复的方法,除非改善性能。当一个缓存是语义透明的,这个客户端接收到完全相同的回复(除了网络头),该回复已经收到直接被源服务器处理的请求。
validator
协议元素被用来找出任何等同于一个实体副本的缓存项。
1.4 总体操作
HTTP协议是一个请求/回复协议。一个客户端发送一个请求到服务器用请求方法、URI和协议版本的格式,随后一个MIME-like消息包含请求的修改者,客户端信息和可能主题内容通过一个服务器连接。服务器回复一个状态行,包含信息的协议版本和一个成功或者失败的代码,随后一条MIME-like消息包含服务器信息,实体主信息和可能实体主体内容。HTTP和MIME的管理在19.4附录中说明。
大多数HTTP通讯会被用户代理所初始化,并且由一些源服务器允许连接到资源的请求所组成。一个最简单的例子,这个可能被用户代理(UA)和源服务器(O)之间的一个单连接所实现(V)。
request chain ------------------------>
UA -------------------v------------------- O
<----------------------- response chain
一个更复杂的情况发生在一个或者更多的中介在请求/回复链中表现出来时。那里有3种常见的中介形式:代理,网关和隧道。代理是一个转发代理,接收到一个绝对形式的URI请求,重写所有或者部分消息,并且转发格式化请求转发给被URI认证的服务器。网关是一个接收代理,作为一些其他服务器上面的层,并且如果必要,将请求翻译为底层服务的协议。隧道作为两个连接的转接点,并不变更消息;隧道通常被用作当通讯需要穿过一个中介(例如防火墙),而当这个中介不能理解消息的内容时也需要用到隧道。
request chain -------------------------------------->
UA -----v----- A -----v----- B -----v----- C -----v----- O
<------------------------------------- response chain
上面的符号代表了3个总结(A,B和C),在用户代理和源服务器之间。一个请求或者回复消息传输的整个链会穿过4个分割的连接。这种区别是重要的,因为一些HTTP通讯操作可能仅允许最近的连接、非临近的隧道、也可能是仅是链的终点、或者是到链上所有的连接。尽管上图是线性的,但每个参与者都可能会被多个同步的通讯所参与。例如,B可能会接收除了A以外的其他客户端的请求,并且也可能转发请求给除了C以外的其他服务器,同时他也可能在处理A的请求。
通讯的任何部分都不会作为一个隧道来雇佣(使用)一个内部缓存来处理请求。如果一个链上的一个参与者有一个适用请求的回复缓存,这个缓存的效果是使请求/回复链变短。如果B有一个请求从O(通过c)的更早的回复的缓存副本,则下图的链的结果不能被UA或者A缓存。
request chain ---------->
UA -----v----- A -----v----- B - - - - - - C - - - - - - O
<--------- response chain
不是所有的回复都用作缓存,并且一些请求可能包含了缓存行为的特殊要求的修改器(修饰符?)。HTTP缓存行为的要求和缓存响应在第13章中定义。
事实上有各种各样的架构和缓存配置和代理通过万维网被试验和发布。这些系统包含国家层次的代理缓存来节省跨洋带宽,这些系统的广播和多播缓存实体也组织通过CD-ROM的缓存数据的分布式子集,等等。HTTP系统被用在公司高带宽链接的内部网,也被用在通过低功耗的PDA无线链接和断断续续不稳定链接的访问。为了支持各种各样的配置的目标,HTTP/1.1已经发布了,当介绍协议结构时遇到到那些构建高可信赖的情况和失败至少是可信赖显示的失败的应用程序的人的需要。
HTTP通讯通常发生在TCP/IP连接之上。缺省的TCP端口是80,但其他端口也能用。这不能妨碍HTTP在Inter网或其他网络之上任何其他协议的实现。HTTP仅仅假设一个可信赖的传输;任何协议提供保证可以被使用;HTTP/1.1请求和回复结构在协议的传输数据单元映射的问题超出了本说明的范围。
在HTTP/1.0中,大部分实现为每一个请求/回复交换使用一个新的连接。在HTTP/1.1中,一个连接可能被用到一个或者多个请求/回复交换,尽管连接可能被各种理由关闭(请见第8.1章)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值