网络协议介绍内容摘要:

1 HTTP(超文本传输协议 ) HTTP 简介 超文本传输协议( HTTP)是 一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议。 在 1990 年 WWW 全球信息刚刚起步的时候 HTTP 就得到了应用。 HTTP 的第一个版本叫做 HTTP/,是一种为互联网原始数据传输服务的简单协议。 由 RFC 1945[6]定义的HTTP/ 进一步完善了这个协议。 它允许消息以类似 MIME 的格式传送,包括有关数据传输的 维护信息 和关于请求 /应答的句法修正。 但是, HTTP/ 没有充分考虑到分层代理,高速缓存的作用以及对稳定连接和虚拟主机的需求。 并且随着不完善的进程应用的激增,HTTP/ 迫切需要 一个新的版本 ,以便使两个通信应用程序能够确定彼此的真实性能。 这里规定的协议叫做 “HTTP/. 这个协议与 HTTP/ 相比,要求更为严格,以确保各项功能得到可靠实现。 实际的信息系统除了简单的检索外,要求更多的功能性( functionality),包括查找 (search),前端更新 (frontend update)和注解 (annotation)。 HTTP 允许可扩充的方法集和报头集以指示请求的目的 [47]。 它是建立在统一资源标识符( URI) [3]提供的地址( URL) [4]和名字( URN)上 [20], 以指出方法应用于哪个资源的。 消息以类似于一种叫做多用途网络邮件扩展( MIME) [7] 的互联网邮件的格式传送。 HTTP 也是用于用户代理之间及代理 /网关到其他网络系统的通用通信协议,这样的网络系统可能由 SMTP[16],NNTP[13],FTP[18],Gopher[2]和 WAIS[10]协议支持。 这样, HTTP 允许不同的应用程序对资源进行基本的超媒体访问。 HTTP 术语 本说明用到了若干术语,以表示 HTTP 通信中各参与者和对象扮演的不同角色。 连接( Connection) 为通信而在两个程序间建立的传输 层虚拟电路。 消息 (Message) HTTP 通信中的基本单元。 它由一个结构化的八比特字节序列组成,与第 4 章定义的句法相匹配,并通过连接得到传送。 请求 (Request) 从客户机到服务器的请求 ,其首行包括利用资源的方式 ,区分资源的标识 ,以及协议的版本号 应答 (Response) 接收和翻译一个请求信息后,服务器发出一个 HTTP 应答信息. 资源 (Resource) 一种网络数据对象或服务,可以用第 节定义的 URI 描述。 资源可以以多种表现方式 (例如多种语言,数据格式,大小和解决方案)或其他不同的途径获得。 4 实体 (Entity) 作为请求或应答的有效负荷而传输的信息 .一个实体包含报头形式的维护信息和消息体形式的内容 表示方法 (Representation) 一个应答包含的实体是由内容协商决定的 内容协商 (Content Negotiation) 为请求服务时选择适当表示方法的机制( mechanism)。 任何应答里实体的表示方法都是可协商的 (包括出错应答 ). 变量( Variant) 在任何给定时刻 ,与一个资源对应的表示方法可以有一个或更多 .每个表示方法称作一个变量 .使用变量这个术语并不必然意味着资源是由内容协 商决定的 . 客户机( Client) 为发送请求建立连接的程序 . 用户代理 (User agent) 初始化请求的客户端程序 .常见的如浏览器 ,编辑器 ,蜘蛛 (网络穿越机器人 ),或其他的终端用户工具 . 服务器 (Server) 同意连接以便通过发回应答为请求提供服务的应用程序 .任何给定的程序都有可以既做客户端又做服务器。 我们使用这些术语仅指特定连接中程序完成的任务 ,而不是指通常意义上程序的性能 .同样 ,任何服务器都可以基于每个请求的性质扮演原服务器 ,代理 ,网管 ,或者隧道等诸角色之一。 原服务器( Origin server) 给定的资源驻留或创建的地方 . 代理服务器( Proxy) 一个既做服务器又做客户端的中介程序 .,其用途是代表其他客户发送请求 .请求在内部得到服务 ,或者经过一定的翻译转至其他服务器 .一个代理服务器必须能同时履行本说明中客户端和服务器要求 .“ 透明代理 ” ( transparent proxy)是一种除了必需的验证和鉴定外不修改请求或相应的代理 .“ 非透明代理 ” ( nontransparent proxy)是一种修改请求或应答以便为用户代理提供附加服务的代理 ,附加服务包括类注释服务 ,媒体类型转换 ,协议简化 ,或者匿 名滤除等 .除非经明确指出 ,HTTP 代理要求对两种代理都适用 . 网关( gateway) 为其他服务器充当中介的服务器 .与代理服务器不同 ,网关接收请求 ,仿佛它就是被请求资源所在的原服务器。 提出请求的客户可能觉察不到它正在同网关通信 . 一个在两个连接之间充当盲目中继( blind relay)的中间程序 .一旦有效 ,隧道便不再被认为是 HTTP通信的用户 ,虽然隧道可能已经被 HTTP请求初始化了 .当两端的中继连接都关闭的时候 ,隧道不再存在 . 高速缓存( Cache) 一个程序应答信息的本地存储和控制此信息存储、检索 和删除的子系统 ,一个高速缓冲存储器存储应答为的是减少对将来同样请求的应答时间和网络带宽消耗 ,任一客户或服务器都可能包含一个高速缓存 ,但高速缓存不能应用于一个充当隧道的服务器 . 可缓存( Cacheable) 如果一个高速缓存允许存储应答信息的一份拷贝运用于应答后继请求的拷贝 ,一个应答就是可缓存的 .用来确定 HTTP 应答的缓存能力( cacheability)的规则在 13 节中有定义 .即使一个资源是可缓存的 ,也可能对一个高速缓存能否将缓存拷贝用于某特定请求存在附加 5 的约束 . 直接( firsthand) 如果一 个应答直接到来并且没有缘于原服务器 ,或若干代理服务器的不必要的延时 ,那么这个应答就是直接的 .如果它的有效性已经被原服务器直接认证 ,那么这个应答也同样是第一手的 . 明确终止时间( explicit expiration time) 原服务器预算一个实体在无需进一步确认的情况下不再被高速缓存返回的时间 . 探索终止时间( heuristic expiration time) 当没有外在的终止时间可利用时 , 由高速缓存所指定的终止时间 . 年龄( Age) 一个应答的年龄是从它被发送 ,或被原 服务器成功确认到现在的时间 . 保鲜寿命( Freshness lifetime) 一个应答生成和过期之间的时间长度 . 保鲜( Fresh) 如果一个应答的年龄还没有超过保鲜寿命 ,它就是保鲜的 . 陈旧( Stale) 一个应答的年龄已经超过了它的保鲜寿命 ,就是陈旧的 . 语义透明( semantically transparent) 当它的使用除了改善性能外既未影响请求客户机也未影响原服务器时 , 高速缓存对于某特定的应答就是工作于语义透明方式了 .当高速缓存语义透明时 ,客户恰好收到与原服务器直接处理请求 后得到的应答(除了逐段转接的报头部分)完全相同的应答。 有效性判别器( Validator) 一个用来查找一个高速缓存记录是否是一个实体的等效拷贝的协议元素 (例如 ,一个实体标记( entity tag)或最终更改时间( LastModified time)). 上游 /下游( upstream/downstream) 上游和下游描述了消息的流动 :所有消息都从上游流到下游 . 向内 /向外( inbound/outbound) 向内和向外指的是消息的请求和应答路径 :向内 即 移向原服务器 ,向外 即 移 向用户代理 总体操作 HTTP 协议是一种请求 /应答协议。 与主机建立连接后,客户以请求方法, URI 和协议版本的形式向服务器发送请求,继以类 MIME 信息,其中包括请求修改,客户信息和可能的正文内容。 服务器用包括消息协议版本和成功或错误代码的状态进行应答,继以包括服务器信息,实体维护信息和可能的实体内容的类 MIME 消息。 当一个或一个以上的中介在请求 /应答链中出现的时候,会出现更复杂的情形。 常见的中介形式有三种:代理,网关和隧道。 代理是一种转送工具,它接收绝对形式的 URI 请求,重写全部或部分消息,然后把重新 格式化后的请求发送到 URI 确定的服务器上。 网关是一种接收工具,它充当其他服务器的上层,必要时将请求翻译为下层服务器的协议。 隧道不改变消息而充当两个连接之间的中继点;它用于通信需要穿过中介(如防火墙),甚至中介不能理解信息内容的时候。 实际上,目前万维网上有多种结构和配置的高速缓存和代理被实验或使用。 这些系统包 6 括节省越洋带宽的全国代理层,广播或多点通信缓存接口, 通过 CDROM 分配子缓存数据的机构,等等。 HTTP 系统应用在宽频带连接的企业局域网中,通过 PDAs 的低耗无线连接和断续连接的访问。 的 目标是支持各种各样的应用配置,引进协议结构满足那些需要较高可靠性,可以排除故障或至少指示故障的网络应用的要求。 HTTP 通信在通常发生在 TCP/IP 连接上。 默认端口是 TCP 80,不过其它端口也可以使用。 在互联网或其他网络上,这并不妨碍 HTTP 应用在其他协议的顶端。 仅仅期望可靠的传输;任何提供这种保证的协议都可以使用;协议传输数据单元的 HTTP/ 请求和应答结构的映象已经超出了本说明书的范围。 在 / 中,大部分的实现为每个请求 /应答交换使用了新连接。 而 / 中,一个连接可以 用于一个或更多请求 /应答交换。 内容编码 内容编码值表示一种已经或可以应用于实体的编码变换。 内容编码主要用来允许文档压缩,换句话说,有效的变换而不损失它的基本媒体类型的特性,也不丢失信息。 经常地,实体以编码形式储存 ,直接传送 ,只能由接收者译码 . contentcoding = token 所有内容编码值都是不区分大小写的 .HTTP/ 在接收译码和内容译码的头域里使用内容编码值 .尽管该值描述了内容编码 ,更重要的是它指出需要什么编码机制 来除去编码 . 互联网赋值机构 (IANA)充当内容编 码值标记的注册处 .最初 ,注册表包含下列标记 : gzip(压缩程序) 一种由文件压缩程序 gzip(GNU zip)如 RFC 1952 所描述 生成的编码格式 .这种格式是一种 32 位 CRC LempelZiv 编码 (LZ77)。 [译者注 ]CRC:循环冗余校验 press(压缩) 由通用 UNIX 文件压缩程序 press生成的编码格式 .这种格式是一种具有可适应性的 LempelZivWelch 编码。 对未来的编码来说 ,用程序名识别编码格式是不可取 ,令人气馁的 .在这里他们的用 处是作为历史实践的代表而不是好的方案 .为了同以前的 HTTP 实现相兼容 ,应用应该将 xgzip和 xpress分别等同于 gzip和 press. deflate RFC 1950 [31]定义的 zlib格式与 RFC 1951 [29]描述的 deflate压缩机制的组合 . Identity(标识) 缺省 (标识 )编码。 无论如何 ,不进行转化的应用 .这种内容译码仅被用于接受译码报头 ,并且不能被用在内容编码报头 . 新的内容译码值的标记应该注册。 为了允许 客户和服务器间的互用性 ,内容译码运算的规范需要实现一个可被公开利用并能独立实现的新值 ,并且与这节中内容译码定义的目的相一致 传输编码 传输编码值被用来表示一个已经 ,能够 ,或可能需要应用于一个实体的编码转化 ,为的是能够确保通过网络安全传输 .这不同于内容译码 ,传输译码是消息的特性而不是原始实体的特性 . 7 transfercoding = chunked | transferextension transferextension = token *(。 parameter ) 参数采用属性 /值对的形式 . 参数 = 属性 = 值 属性 = 标记 值 = 标记 | 引用 串( quotedstring) 所有传输译码值是不直观的 .HTTP/ 在 TE 头域和传输译码头域运用传输译码 . 无论何时一个传输译码都被应用于一个消息体 ,传输译码的设置必须包括 大块 ,除非消息被结束连接停止 .当 大块 传输译码被应用时 ,它必须是应用于消息体的最后传输译码 .这些规则允许接受从而确定消息的传输长度 传输译码与 MINE[7]的内容传输译码值相类似 ,它被定义能够实现传送服务器超过 7 位的二进制数据的安全传输 .不过 ,安全传输对纯 8 位传输协议有不同的焦点 .在 HTTP 中 ,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。