




已阅读5页,还剩66页未读, 继续免费阅读
(计算机软件与理论专业论文)proxycache的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学科名称:计算机软件与理论 论文题目: p r o x y c a c h e 的研究与实现 硕士生:顾艳艳( 9 8 s 6 6 ) 导师:汪文勇副教授 1 代理缓存在实际应用方面有非常重要的价值,是当前代理服务器的基本功 能模块,很多代理服务器是作为缓存代理服务器来是用的。缓存可以降低网络 带宽,减少网络流量,缩短网络延迟,缓解服务器的负荷压力。 代理服务器可分为带有缓存和不带有缓存的两种。而实际上,各公司产品 在基本性能差别不大的情况下,竞争的重点都落在提供的功能上。如:更好的 缓存策略一 本课题是整个代理服务器项目中的一部分。本文对有关代理缓存技术的各 种协议进行深入的研究和剖析。研究了缓存取代算法,实现了主动缓存和被动 缓存,并对分布式c a r p 缓存提出了设计。另外,对于动态页面缓存等也提出 了一些建议。 【关键字】 裟竺嚣绷h 丌p 缓存阵列路由协议淼弋肌t e r n e t 缓存厂 ,缓存取代 、 l 旦塑生一 a b s t r a c t s p e c i a l i t y :c o m p u t e r s o f t w a r e t h e o r e t i c s t i t i e : r e s e a r c h & i m p l e m e n t a t i o n o f p r o x y c a c h e g r a d u a t e :g uy a n - y a n ( 9 8 s 6 - 6 ) a d v i s o r :a d j u c tp r o f w a n gw e n - y o n g p r o x y s e r v e r sa r ec l a s s i f i e di n t ot w ot y p e s p r o x yw i t l lc a c h ea n dp r o x y w i t h o u tc a c h e p r o x yc a c h ei sv e r yi m p o r t a n ti n p r a c t i c e i ti s o n eo ft h eb a s i c f u n c t i o nm o d u l e so fm o s tp r o x ys e r v e r s i nf a c t ,m a n yc a c h es e r v e r sa r eu s e da s p r o x ys e r v e r s c a c h e s a v e sn e t w o r kb a n d w i d t h ,l e s s e n sn e t w o r kt r a f f i c ,s h o r t e n s t r a n s p o r tl a t e n c ya n da l l e y st h el o a dp r e s s u r eo na p p l i c a t i o ns e r v e r s s o m e p r o t o c o l sr e l a t e d t op r o x y c a c h e ,i n c l u d i n gi c p 、c a r p 、h t t pe t c , a r ea n a l y z e d c a c h e r e p l a c e m e n tp o l i c i e s a r es t u d i e d a n d i m p l e m e n t a t i o n o f a c t i v ec a c h ea n dp a s s i v ec a c h ei sd i s c u s s e d t h ed e s i g no fc a c h eb a s e do nc a r pi s d e s c r i b e d i na d d i t i o n ,s o m es u g g e s t i o n sa b o u tt h ec a c h eo fd y n a m i cp a g e sa r e p r o v i d e d 【k e yw o r d s p r o x y p r o x yc a c h e l h t t p i c a r p i i c p i c a c h er e p l a c e m e n t 第一帝p r o x yc a c h e 的概述 第一章p r o x y c a c h e 的概述 本课题是代理服务器的一部分。我们首先介绍代理服务器的些知识,接 下来介绍代理缓存。 1 1 p r o x yc a c h e 的原理与功能 1 1 1 代理服务器的基本知识 我们现在使用的i n t e r n e t 是一个典型的客户机n 务器( c l i e n t s e r v e r ) 结构:当我们在使用本地机与i n t e r n e t 相连接时,一般通过本地机上的客户端 程序( 例如浏览器、软件下载工具等) 发出请求;远端的w w w 服务器程序在接 到这些请求后响应请求并提供相应的服务。而p r o x ys e r v e r ( 代理服务器) 则处在客户机和服务器之间,是接收或解释客户端连接并把请求发起到服务器 的新连接的网络节点。对于远程的服务器而言,代理服务器是客户机,它向服 务器提出各种服务申请:对于客户机而言,代理服务器则是服务器,它接受客 户机提出的申请并提供相应的服务。通俗地说,代理服务器在i n t e r n e t 上扮演 的角色有点像一个跑腿的伙计。 代理服务器处理客户端和服务器之间所有的通信,它可以用于多个目的。 一是连接,其他则包括安全性、缓存、日志和i p 地址转换。 代理服务器可以节省公用i p 地址空间,隐藏i n t e r a c t 地址,可以提供缓存, 控制和过滤代理,日志代理,逆向代理等。代理服务器基本功能之一是缓存, 大多数代理是作为缓存代理而出现的。 目前实现的代理有许多,诸如w w w 代理f t p ( f i l et r a n s p o r tp r o t o c 0 1 ) 文 件传输协议代理,s o c k s 代理,r e a l a u d i o 代理,t e l n e t 代理,s m t p ( s i m p l em a i l t r a n s p o r tp r o t o c 0 1 ) 简单邮件传输协议和p o p 3 的代理等等。 1 1 2 代理缓存原理 堡二里! ! ! 翌! ! ! 韭塑塑堕 代理缓存p r o x yc a c h e 是一个试图改善效率的过程。把经常被请求的 w w w 信息的拷贝在代理服务器的硬盘中,即存储在本地文件中,靠近信息使 用者,以后对这些信息的请求就可以直接访问代理缓存,不必再连接到远程服 务器上。信息的拷贝集合被称为缓存。 p r o x yc a c h e 位于信息使用者和信息提供者之f b j 。当终端使用者使用h t t p 请求信息对象,这个请求被发给p r o x yc a c h e ,而不是到h 1 v r pu r l 鉴别的源信 息资源所在地服务器。如果p r o x yc a c h e 已经有u r l 识别的信息对象的当前拷 贝,它直接返回此对象给信息使用者如果没有拷贝,或拷贝已经过期,那么从 信息源取回对象返回对象给信息使用者,并且在p r o x yc a c h e 中备份这个对 象。为了让这个处理过程工作,信息使用者的w e b 浏览器( 或其他取回工具) 一定要被重新定向到p r o x yc a c h e ,代理必须能对它局部缓存里的信息对象的 流通做出有效的判断,并且也能决定一个刚被取回的信息拷贝是否应该被保持 或者,可能不再需要的信息的拷贝是否被丢弃。使用者和信息源必须愿意他们 正在交换的信息被拷贝。 1 1 3 代理缓存功能 微处理器c a c h e 能够降低内存访问延迟和降低从主存取回数据所需要的 总线带宽。与这种非常类似的方式,p r o x yc a c h e 能够降低取回文档的延迟,降低 取回所需要的通信带宽,缓解网络的拥塞情况,提高网络访问速度,降低源服 务器的负荷,大大降低网络使用费用。 随着w w w 的增长和流行,i n t e r a c t 上的用户呈指数增长,i n t e r a c t 通信 持续增加,网络越来越拥挤,带宽越来越珍贵。对于向用户提供i n t e r a c t 服务的 组织,如果按照使用收费,网络通信就很昂贵。网络流量的部分原因在于i n t e r a c t 上对来自远程w e bs e r v e r 的对象的重复使用。减少通信的方法之一是在l a n 中 配置代理服务器并设置缓存,把经常被访问的i n t e r a c t 信息放在缓存里。 i n t e m e t 连接业务不仅仅涉及想减少网络通信量的人。事实上,i s p 自己也 关心通信的来源、目的地以及i n t e m e t 伙伴。i s p 会尽可能减少通信量,因为这 会减少上层i s p 的收费并减少网络负载。因为这些原因,很多i s p 向通过办公 室连接到i n t e r a c t 的客户端提供代理服务器。 高效的p r o x ys e r v e r 可以事先设立有关的网址,特定的内容与目录,并将其 从相应的删s e r v e r 上复制到缓存中,这样用户可有快的多的响应,既几乎 9 0 的访问要求可以在本地得到,尽管对不在缓存中的内容可能要花更长一点 竺二:里! ! ! 翌! ! ! 型幽生一一 的时间( 途中经过个p r o x ys e r v e r ) ,但与简单扩大信道相比,整个系统的花 费与性能的改进是惊人的,例如n e t s c a p e 的p r o x ys e r v e r 有1 2 8 g b 的缓存能力, 可以用来应付大量的访问,但投入的经费是一次性的。特别对于拥挤的国际联 接,因为不必为一个最简单的访问而占用国际信道。 1 2 p r o x yc a c h e 的发展 p r o x yc a c h e 从最初代理简单c a c h e 功能,到以后逐渐发展,开始对 c a c h e 提出许多协议,直至出现独立c a c h e 产品,其间发展如下: 9 6 年前c e r np r o x y 共享软件实现最简单的缓存功能。c e r n 层叠 ( c e r nc a s c a d i n g ) 提供通过代理链的h t t p 转发,让缓存路由。 但是没有商业化的代理服务器。 9 6 年,以第一代c e r np r o x y 技术为基础,更新的第二代 h a r v e s t s q u i d 提出层次代理c a c h e 技术。h a r v e s tp r o j e c t 提出了i c p 协议,改善了i n t e m e tw e b 性能和可升级性。9 6 年起出现了许多商业 化的代理服务器软件,大部分功能简单。如:i s h a r e l 0 、r i d e w a y l 0 等主要提供多台主机通过一台主机连接i n t e m e t ,它们支持的协议相当 少,不提供信息缓存,主要目的就是高速转发信息包,简单的共享上 网。而9 6 年同期,m i c r o s o f t 、n e t s c a p e 推出他们面向企业级的代理服 务器m s p r o x y l 0 、n s p r o x y l 0 ,他们支持多种协议,提供w e b 缓存。 9 7 年大部分代理服务器软件厂商推出了其产品的后续版本,在功能上 有所增强,支持更多协议,并提供更完善的管理功能。通常一家公司 的代理缓存会支持一种以上的缓存协议。 由于基本功能不会有太大改变,9 8 年以来各厂商尽量提高自己服务器 的性能。许多厂商已经把缓存作为单独的产品推出,而且另外还有许 多其他的缓存,诸如对关系数据库的缓存产品的出现,如c a c h e4 是 e - d b m s 产品。 而国内对代理服务器的研究则出现较晚,邮电部有p r o x y9 8 ,中国科学 院的e r c t s t 防火墙有9 种代理功能,中网研制的“中网智能型代理服务器”, 但都没对专门的缓存协议做出分析。 1 3 p r o x yc a c h e 类型 笙二翌! :! ! 型! ! ! 坠堕塑堡 有四种类型的缓存,下面分别介绍。 1 被动缓存 被动缓存( p a s s i v ec a c h i n g ) 也被称为基本或按需缓存,是代理服务 器用于保存远程w e b 页面的机制以便能够直接从缓存中读取,加快响应。客 户直接发送请求给代理服务器,代理检查它的缓存,返回给客户对象。如果代 理缓存没有请求的对象,那么代理服务器就连接至源服务器,取回它返回给客 户,如果这个对象是可缓存的,那么代理服务器就备份它到自己的c a c h e 中。 对象存在的时间可以预先设定,但是当c a c h e 空间已满时,根据一定的算法, 对象有可能被删除。 缓存内容最终会过时。w e b 页面一旦过时,返回给用户前必须从i n t e m e t 上重新下载。客户端请求w e b 页面之后,读入缓存才使得有效利用网络带宽, 但增加了延迟。 2 主动缓存 主动缓存( a c t i v ec a c h i n g ) 是对被动缓存的附加,主动缓存帮助减少 人们在刷新w e b 页面时的等待时间。代理服务器观察缓存中的文件,如果文件 到了过期时间,就会请求自动发送请求给原服务器,取回最新的文件。这样, 缓存会接收文件的更新版本,使得用户不必等待文件更新。因为代理服务器能 够在非高峰时间主动更新,用户等待页面的总时间就会大大减少。但是,网络 上的通信量实际增加了,因为代理不等待用户请求救重新请求页面;如果页面不 再使用,就浪费了时间和带宽。有的代理服务器允许管理人员按照定的规律 更新,也可能支持批处理更新。 总之,主动缓存只在希望减少w e b 页面返回时间时候有用,关心网络带宽 的用户不会使用这项功能。但是,主动缓存将重新获取w e b 页面的工作放在非 高峰时间,从而减少了高峰时期内的通信量。在服务器负载较低时候,p r o x y 才更新经常被访问或者请求的有更长t t l 的对象。 3 否定缓存 当p r o x y 尝试去解析对不存在或不能被定位或访问的u r l 的请求时候, 发生否定缓存( n e g a t i v ec a c h n g ) ,这种情况下,代理缓存否定结果,以 便将来对此u r l 的请求,被快速的解析。代理持续检查背景且刷新缓存,直到 页面变得可用。对h t t p 错误如4 0 3 ( 被禁止的请求) 和4 0 4 ( 未发现u p , l ) 时,可用否定缓存。 4 层次缓存 t 层次缓存即h i e r a r c h i c a lc a c h i n g ,允许信息从靠近或晟近的代理 服务器取回,从而不必再连接到原w e b 服务器。 如果只是单个缓存,那么它当掉时,连接到这个代理缓存的所有客户将被 与w e b 断开。即便运行时候,当大量使用时期,它也可能成为瓶颈。单个缓 存能达到的命中率存在有两个重要的限制。第一,可用的存储量是有限的,当 重复请求个对象,而这个对象因为缺少空间被从缓存中逐出的时候,缓存将 有较高的丢失率。第二,为了缓存目的,从尽量多用户那里聚集请求的愿望与 缓存能够服务的用户数目的限制,正好相矛盾。而层次型缓存则可到达容错率, 可升级性,和聚集几个组的大量请求的目的。 层次和分布式缓存对扩展性很重要。当然,它对一些小型和中等规模的网 络并没多大意义,因为通信量不是很大。但对于大型企业或i s p 来说,在不同 级别的多台代理服务器缓存页面,并相互间共享缓存的页面能大大改善用户访 问的效果,节省网络带宽,降低网络使用费。分布式缓存将多个代理服务器组 成功能阵列,功能上类似于磁盘阵列,服务器间能共享大的负载并尽可能均匀 的分配。 第一帝w w w 代理的协议 第二章w w w 代理的协议 p r o x y c a c h e 可以缓存基于有关协议的传输信息。但是,在针对f t p 的代理, 出于文件太大,缓存效果欠佳,远程终端连接标准协议t e l n e t 的代理则由于响 应消息的不断更新,缓存失去意义;简单s m t p 和邮局协议p o p 3 的代理中,只 是对邮件进行存储转发,邮件不可能重复发送,无须缓存;而且用户访问i n t e r a c t 基本上是浏览业务,故p r o x ys e r v e r 只提供给w w w 代理缓存服务功能。 w w w 代理用来让客户( 浏览器和其他能支持h t t p 协议的应用如 r e a l p l a y e r 等) 通过h t t p 协议访问i n t e m e t 资源。现在流行的w w w 代理一般 都支持h t t p 、h t t p s 和f t p ,但必须符合h t t p 协议的请求和响应格式,能 够对请求资源做基于u r l 的c a h i n g 。 下面是w w w 代理的示意图: h t t p h t t ps e r v e r w w w rj , c 1 i e n t :j) f t ps e r v e r p r o x y t - i t t p s 1 h ii f ss e k v e k 图2 1w w w 代理的示意图 由上图我们可以看出,w w w 代理的大致原理就是客户在与代理服务器连 接成功后发送一个请求信息,代理服务器解析该请求得出访问资源所需的具体 协议,然后依据该协议与目标服务器交谈,在获取客户请求的资源后把该资源 讹一章w w w 代理的m 漩 返回给客户。 本论文我们主要实现h t t p 协议的缓存,所以对于f t p 、h t t p s ,我们 只简要介绍。 2 1h t t p 基础 正确解析和处理符合h t t p 协议的请求和响应是w w w 代理的基础。尽管 客户请求的资源所涉及的协议可以不同,但其请求格式必须得符合h t t p 规范, 同样w w w 代理的响应信息也得遵从该规范,否则客户将无法获得所需信息。 在w w w 代理的实现中,有两个概念非常重要。一个是u r l ,正确的解析u r l 是w w w 代理正常工作的前提:另一个是m i m e ,它用来使浏览器正确理解服 务器返回对象的类型,以便进行正确的处理。这两个概念都不是h t t p 包含的 内容,但h t t p 又与它们密切相关,故我们先对它们简要介绍。 2 1 1 统一资源定位器( u r l ) u r l 是一种标准化的寻址方案,用来在i n t e r n e t 上标识由不同协议支持的 资源位置,它最大的好处是提供了标识资源的一种简单统一的方式。u r l 只允 许用七位a s c i i 文本来表示u r l 。除了字母数字字符,u r l 还允许出现的字符 是:美圆符( $ ) 、横线( ) 、下划线( ) 、圆点( ) 、加号( + ) 、感叹号( ! ) 、 星号( + ) 、单引号( ) 、以及左括号和右括号。其他特殊字符用跟上该字符 a s i c i i 码的十六进制表示,如空格符为2 0 。下表为每种u r l 模式的格式和缺 省值: 表2 1 第一章w w w 代删的协议 正确解析u r l 是w w w 代理正常工作的前提,为了更清楚的理解u r l 下表给出对u r l 串中的通用字符的详细说明 表2 2 & c g i r e g i s t e r ? n a m e = f u & c l a s s = 9 7在h t t p u r l 的检索串中分隔关键字 s 6 值对 :! 竺竺! :! ! :! ! ! ! ! :! ! ! :! 型:! ! 竺 垄堕堡墨塑茎塑:重量鎏塑垄塑窒旦 锕一章w w w f 心。的议 户的工作目录 c i s s :i n t e m e t 通用模式语法 还有一个相关的标准是u n i f o r mr e s o u r c en a m e ( u r n ) 即统一资源名,它 也是用来查找和获取w e b 上数据信息的。两者主要的区别在于u r l 能准确地 识别数据的位置,而u r n 只是一个名字,没有指出到什么地方去查找数据。当 前用户浏览i n t e r n e t 资源主要还是采取u r l ,很少用u r n 。u r l ( u n i v e r s a l r e s o u r c ei d e n t i f i e r - - 统一资源标志符) 作为i n t e r n e t 资源的一种识别方法,它包 括了u r l 和u r n 。在下面的h t t p 协议规范中,我们统一用u r j 来标志访问 的资源。 2 1 2m i m e ( i n t e r n e t 多用途邮件扩充) m i m e 是为支持单一对象包含多重类型对象而设计的标准。h 1 v r p 采用 m i m e 来支持内容一类型标识,所以m i m e 的灵活性体现在它允许通过h t t p 传 输任何数据格式。同时浏览器要根据m i m e 类型来正确处理接收的对象,或调 用相应的应用程序或插件来处理。 表2 3m i m e 的内容类型 a p p l i c a t i o n对象包含应用程序或二进制数( 即数据可执行或为其 他应用程序而备) m e s s a g e对象是邮件信息 i m a g e对象是图象 a u d i o对象是音频数据 对象包含视频数据 内容- 类型域被用作对象的首部,包括类型和子类型,某些特定类型还要求 附加的参数。m i m e 内容类型的语法如下: 类型子类型;参数:参数;参数 如:t e x t h t m l 、v e d i o m p e g 等 一帝w w w 代j :! i = 的f j 议 表2 4 常见的m i m e 内容- 类型及含义 2 1 3h r r p 协议规范 h r r p 是w w w 上分发信息的主要协议。它相对简单而且很灵活。h t t p 一个主要的任务是提供快速响应的简单算法。为了实现这一目标,h t t p 一开 始就被定义成一种无状态的协议,即该协议不保留从一次请求到下一次请求之 间的有关连接信息。而如f t p 这样的协议是保留状态的,因为在客户没有明确 退出和断开之前,客户可以改变当前工作目录,下载多个文件。随着i m e r n e t 发展,主页的内容越来越丰富,很多站点的一个页面就包括几十张图片。如果 还是如同h t t p 1 0 ,每次连接取一个文件显得效率极低,会影响主页显示的 翌= ! 芝! 型! ! 些堕! :丝 速度和效果。于是h t t pl1 丌始支持保持连接,允许一次连接获取多个文件 这大大改善了文件传输的效果,但也增加了服务器处理的复杂程度。 为了能使客户从h t t p 服务器获取所需资源,h t t p 一般包括以下四步: l客户建立起与服务器的连接 2客户向服务器发出请求指出要检索的文档。如: g e t h t t p 1 0 c o n n e c t i o n :k e e p a l i v e u s e r - a g e n t :m o z i l l a 4 0 6 e n ( w i n 9 5 ;i ) h o s t :w w w u e s t c e d u c n a c c e p t :i m a g e g i f , i m a g e x - x b i t m a p ,i m a g e j p e g ,i m a g e p j p e g ,i m a g e p n g ,+ + a c c e p t e n c o d i n g :g z i p a c c e p t l a n g u a g e :e n a c c e p t c h a r s e t :i s o 一8 8 5 9 1 + u f f - 8 对应的r f c 请求定义格式为: 请求头= 简单请求i 完全请求 简单请求= g e t 请求的u r ic r l f 完全请求= 请求行 + ( 普通首部l 请求首部f 实体首部) c i 也f 【实体主体 请求行= 方法请求的u r ih t t p 版本c r l f 请求的u r j = 绝对格式u r ii 相对格式u r i 以上例子中第一行是请求行,它包括方法、u r i 、和协议版本。余下的行是 某种类型的首部行一般先是普通首部,然后是请求首部,最后是实体首部 ( h 1 v r p 0 9 不支持首部) ,两个回车换行( c r l f ) 标志请求的结束。 对于请求行来说,如果不是连接代理服务器,一般都是用的相对格式u r i ,而 代理服务器必须得用绝对格式u r l 。它们之问的差别是相对格式u r i 不包括协 议名、主机名和端口号,因为到h t t p 服务器的连接已经建立,协议名已经设 笙三童兰! ! 坐些堕旦坐生一 定为h t t p ,并且服务器名和端口号就是当前本机被连接的地址和端口。而代 理服务器必须靠绝对u r i 来解析出客户想与之连接的目的服务器的地址和端 口,尽管由h o s t :选项同样可以得出目的服务器的地址和端口,但h o s t :选项是 客户可选的。这可能是w w w 代理服务器与w e b 服务器最大的区别了。 下面是对h t t p 请求格式中用到的几个术语的具体解释。 方法( m e t h o d ) h t t p0 9 只支持g e t 方法,而h t t p10 增加了h e a d 、p o s t 、p u t 、 d e l e t e 、l i n k 、u n l i n k ,h t t p1 1 增加了o p t i o n s 、t r a c e 。 g e t :用于从服务器请求一个用u r i 标志的对象。如果对象是文档或文件, g e t 将请求其内容,如果对象是程序或脚本,g e t 将请求程序的运行结果或脚 本的输出。如果对象是数据库查询,g e t 将请求查询的结果。每次循着链浏览 w e b 网时,浏览器都要用g e t 方法来读取你请求的文档。 h e a d :主要用于获取服务器对请求的响应头,而不是请求对象本身。它对 于测试链的合法性和可访问性特别有用。 p o s t :用于客户向服务器传送数据以便服务器作相应的处理。p o s t 方法 经常用于向h t t p 服务器提交h t m l 表格以便处理。对于基于页面的信息搜索, p o s t 方法较g e t 方法有一个显著的优点:能够从客户端向服务器传输任意量 的数据,因为使用p o s t 方法,搜索参数是放在请求的实体主体中;而用g e t 方法,其搜索参数包含在u r i 中,而单个u r i 是有长度限制的。 p u t :用于创建新资源或者更新所有资源。p u t 方法把数据提交给服务器, 使得这些数据可以通过给定的u p , 来访问。如果给定的u r i 的数据已经存在, 数据就作为更新的版本。如果数据不存在,服务器就在给定的u r i 处创建新资 源。这个方法主要目的就是允许远程更新主页,一般用在f r o n t p a g e 、h o t d o g 这样的主页编辑器中。 d e l e t e :主要与p u t 方法配对,用于通知服务器删除由u r i 指定资源。 l i n k :此方法用于通知服务器增添指向由u r i 指定对象的链关系。链关系 表示某资源是另一资源的后继或前驱,或是另一资源的创建者。如果服务器支 持此方法,响应的实体首部中会包含l i n k :域,此域指明发送对象与其他对象间 的一个或多个链接关系。此域只是个标志,到现在为止还未有任何用处。 u n l i n k :与l i n k 配对,用于取消由u r i 指定对象的链关系。l i n k 与 u n l i n k 到现在为止还没有客户和服务器支持它们。 o p t i o n s :此方法请求服务器描述一下由u r i 指定的资源的特点。同样, 当前流行的客户和服务器均不支持此方法。 t r a c e :t r a c e 方法类似与p i n g 命令。接受t r a c e 命令的服务器将传 输的字符串作为消息体送回。t r a c e 方法对于验证服务器的是否处于活动状态 非常有效,可惜同样当前流行的客户程序和服务器程序均不支持此方法。 普通首部 普通首部可以用在请求和响应中,它不直接提供有关请求、响应和传送对 象的信息。比较常见的是: d a t e :提供消息初始创建的日期和时问。 p r a g m a :通过该域客户就能请求接收数据的服务器以某种方式处理请求。 h t t p 1 0 只定义了“n o c a c h e ”这种方式,它表示任何带缓存的服务器收到请 求后必须真正地请求文档,而不论文档是否已经缓存。 c o n n e c t i o n :此字段定义的选项只在h t t p 服务器和单个客户端之间有效, 用来说明响应结束后是否继续保持连接来处理下一请求。参数为“k e e p a l i v e ” 和“c l o s e ”。 请求首部 请求首部用于指定请求的性质以便服务器解释请求。其常用选项有: u s e r - a g e n t :标识所用的客户程序( 如n c s a 、m o s a i c ) 。通常,这个域就 是浏览器名,如:m o z i l l a 4 0 6 e n ( w i n 9 8 ;i ) 、m o z i l l a 4 0 ( c o m p a t i b l e ;m s i e4 0 1 ; w i n d o w s 9 8 ) 、m o z i l l a 3 0 ( c o m p a t i b l e ;o p e r a 3 o ;w i n d o w s9 5 n t 4 ) 3 2 1 等。 h o s t :这是h t t p 1l 提供的新选项,主要是浼明请求的资源放置在哪里。 一般此值就是服务器的本机地址,但也可以不同。如果你的请求是h t t p 1 1 版本,浏览器必须加上此字段,否则可能返回出错信息。 i f - m o d i f i e d s i n c e :用在g e t 方法的首部以产生条件请求。只是当指定对象 在给定日期以后作过修改,服务器才会向客户返回该对象。如果对象没有修改 过,服务器将返回状态码3 0 4 。 a u t h o r i z a t i o n :其后包含了验证身份的信息,该信息是随同请求发出的。服 务器用这个信息来判断客户是否合法,是否响应用户的请求。到现在为止h t i p 只提供了对用户名和口令进行编码的简单验证机制,即基本访问验证机制 ( b a s i ca c c e s sa u t h e n t i c t i o ns c h e m e ) 。这种验证是比较低级的,没有采用加密 机制,故是不安全的。 r e f e r e r :用于标识当前请求的链对象,说明当前请求是从哪个u r i 链接过 来的。比如我们访问主页h t t p :w w w s c u e d u c “,其中主页中包含一图片 笙兰塞兰型! 坐些塑坐坚 i m 8 9 e s e n g l i s h g i f ,那么浏览器对此图片的请求头中一般就会包含此域,如: r e f e r e r :h t t p :l w w w s c ue d u c n a c c e p t :指定了响应中客户将接收的内容类型或内容类型集。 a c c e p t c h a r s e t :用于指定客户可接收的字符集,如:i s o - 8 8 5 9 1 , u t f - 8 a 。e p t - e n c o d i n g :指定一系列内容编码类型,或内容编码的类型表,作为 客户可接收的响应编码类型。 a 。p t - l a n g u a g e :它包含一系列语言。或自然语言集,表明客户可接收的响 应语言类型。 实体首部 请求的实体首部的域提供提交对象的有关信息。这些域中的信息说明了如 何解释提交的的对象。对于请求来说,实体首部主要用于p o s t 方法后。 c o “把“_ l e n g m :指定实体内容的字节数。服务器要靠此了解提交内容的大 小。 :,旦“:c ! ! ! 1 却。:表示提交对象的m i m e 类型。通过标志对象的数据类型,客 户程序才能恰当地处理该对象。 实体主体 壁的实体主体的内容就是用户提交的数据。常见的就是p o s t 方法提交的 h t m l 页面或搜索的参数串等。 。 3 服务器发出响应,包括状态码和文档的正文( 如果文档存在) 。如 h t t p 1 02 0 0d o c u m e n t f o l l o w s d a t e :t u e ,2 0o c t1 9 9 80 8 :5 6 :3 0g m t s e r v e r :n c s a i 5 2 l a s t - m o d i f i e d : r u e ,2 3j u n19 9 80 8 :5 8 :0 6g m t c o n t e n t t y p e :t e x t h t m l c o n t e n t l e n g t h :16 9 3 对应的r f c 请求定义格式为 笙= 里型! 型! ! 型墅鲨:丝一一 响应= 简单响应i 完全响应 简单响应= 实体主体 完全响应= 状态行 + ( 普通首部l 响应首部i 实体首部) c r l f 实体主体 状态行= h t t p 版本状态码原因解释短语c r l f 状态码 状态码表征服务器是否成功地满足了客户的请求。状态码由一个三位整数 和解释状态码含义的正文短语组成,如上面的状态行 h t t p 1 02 0 0d o c m n e n tf o l l o w s 其中2 0 0 就为该状态行的状态码。 状态码均以1 ,2 ,3 ,4 ,5 开头。1 类保留以备将来使用,2 类状态码表示 成功服务器理解客户的请求,并且毫无困难地给出响应。3 类码通常表示 发生了重定向服务器理解请求并且能够取得资源,但发现资源不在指定的 位置而在其他地方。4 类码表示客户出错,以5 开头的状态码表示服务器出错。 表2 5 常用h t t p 错误信息 铺一帝w w w 4 删的| j jl 女 笙= 至! 型型! ! ! ! 堕坐坚 就会返回4 0 1 消息。收到该消息时,浏览器 会提示用户输入用户名和口令,尽管标准并 不要求客户端重发请求 普通首部信息 响应中的普通首部域与请求格式中的用法完全相同。特别要注意的是在首 部和实体主题之间一定得有一空行作分割符,即使不提供实体主体,也不允许 省略该空行。 响应首部信息 我们常见的响应首部域为 s e r v e r :标识服务器软件类型 w w w a u t h e n t i c a t e :通知客户所请求的u r i 是受保护的,必须进行身份 验证。首部还给出了用于实现验证的机制 实体首部信息 除去我们在前面的请求实体首部提到的c o n t e n t - t y p e 、c o n t e n t l e n g t h ,我 们还会在响应信息中看到: c o n t e n t e n c o d i n g :指明用于对象编码的压缩、加密、封闭机制。比如,如 果对象是压缩的g i f 图象,此域的取值可能就是g z i p ;如果c o n t e n t t y p e 说明 了类型是t e x t p l a i n ,有时需要在此字段说明对象的字符编码机制,如返回的是 系统配置信息这样的文档,就常常需要用7 b i t 这样的值来说明。 c o m e n t l a n g u a g e s :标志了对象的语言。 e x p i r e s :表示数据失效的日期。 e t a g :实体标志,它是“透明的”c a c h e 验证子,可以在那些不方便保存修 改时间的场合更容易确定实体是否改变。 l a s t m o d i f i e d :指明对象上次被修改的同期。通常用来表示资源的缓存内容 是否保持有效。 l o c a t i o n :用来返回已转移了对象的u 砌 响应的实体主体 这部分可以是图形、音频、视频文件等多种对象。h t t p 支持任意类型数 据的传输正是它的重要优点。 4 客户或者服务器任一方断连 以上我们给出的是非保持连接的过程,如果客户在请求头中用“c o n n e c t i o n : k e e p a l i v e ”要求保持连接,而服务器又支持,与上面唯一的不同就是第4 步, 服务器并不断连而是继续等待客户的请求,如果客户在服务器规定的时间内没 有请求,则服务器关闭连接。 2 1 4 代理服务器与w e b 服务器的主要区别 如果客户不能直接访问w e b 服务器,而必须得通过代理服务器,会有什 么不同呢? 其实h t t p 代理和h t t p 服务器工作方式很相似,正是这样,i n t e r a c t 上的最流行的w e b 服务器a p c h e 同时又提供了代理模块。它们之间主要的不 同在以下方面: 1 客户增加了特定的首部域。如果要使用h t t p 代理,客户得用 第一奇 w w w 代耻的m 波 p r o x y c o n n e c t i o n 替换c o n n e c t i o n 字段。如果需要基本认证,客户请求 头域中得增加p r o x y a u t h e n t i c a t e ,而服务器响应头域则得增加 p r o x y a u t h o r i z a t i o n 。 p r o x y c o n n e c t i o n :与c o n n e c t i o n 字段相似,用来请求代理服务器 保持连接,一般服务器不明确的返回包含“c o n n e c t i o n c l o s e ”的响 应头信息就认为服务器同意保持连接,客户可以再次发送请求信息。 p r o x y a u t h e n t i c a t e :此响应头主要用于代理服务器向w e b 浏览器 发送“拒绝访问”消息,同时说明代理服务器支持的各种认证方法。 p r o x y a u t h o r iz a t i o n :该字段用于将代理服务器的用户名和口令 从客户端传输给服务器,认证方法与前面讲的对w e b 页面访问权限的 身份认证是完全一样的。 2 对请求的处理方式w e b 服务器主要是根据请求的u r i 返回指定的文件 或执行相应的程序返回相应的结果。而h t t p 代理服务器主要是根据请 求的u r i 连接目的w e b 服务器取得响应的资源,或查找c a c h e 系统获 取缓存的资源返回结果。 2 2 f t p 及h t t p s 基础 2 2 1 f t p 协议 文件传输协议( f t p ) 是另一个i n t e r n e t 上流行的协议。与h t t p 一样,它 可以通过t c p i p 在服务器和客户之间传输任意类型的文件,与h t t p 不同的是, 它还提供文件和目录管理。同样f t p 的命令格式也是纯文本方式,这使得我们 容易排错和编程实现。 兰= ! ! ! 型! ! 型业坐竖一 文件系统 用户外商- 卜叫 用户 塑母景超塑堡矍if t p 响) *i 型誊竖 传输进程il 传输逃程l l 一 图2 2f t p 的通信模型 对符合h t t p 格式的f t p 请求处理过程 我们首先举一个普通的基于f t p 命令行取文件的例子。 s e r v e r 2 2 0p r o f t p d1 2 0 p r e 8s e r v e rr e a d y c l i e n t u s e r a n o n y m o u s s e r v e r 3 3 1a n o n y m o u s l o g i no k ,s e n dy o u rc o m p l e t e e m a i la d d r e s sa sp a s s w o r d c l i e n t p a s sw h o a m i u n k n o w n n e t s e r v e r 2 3 0 欢迎访问电子科技大学计算机学院f t p 服务器( 邱c s u e s t c e d u c n ) s e r v e r 2 3 0a n o n y m o u sa c c e s sg r a n t e d ,r e s t r i c t i o n sa p p l y c l i e n t r e s t1 0 0 s e r v e r 3 5 0r e s t a r t i n ga t1 0 0s e n ds t o r eo rr e t r i e v e t oi n i t i a t et r a n s f e r c l i e n t t y p ei s e r v e r 2 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司组织立冬活动方案
- 公司组强拓展活动方案
- 公司新品上市策划方案
- 公司旧物互换活动方案
- 2025年智能机器人职业资格考试试题及答案
- 2025年信息系统工程师职称考试试卷及答案
- 2025年信息技术支持服务能力考试卷及答案
- 2025年心理测量师资格考试题及答案
- 2025年现代物流管理师资格考试试题及答案
- 2025年网络工程师资格考试试题及答案
- 2025至2030中国大型发电机行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国海洋石油行业市场发展分析及竞争格局与投资发展报告
- 2025年安徽省中考数学试卷真题(含标准答案)
- 2025至2030年中国高纯氧化镁行业市场运行格局及前景战略分析报告
- 妇女保健服务技术规范与诊疗常规
- 高级记者考试试题及答案
- 2025年福建日报新闻发展有限公司招聘题库带答案分析
- 2025国家开放大学《高级财务会计》期末机考题库
- R1快开门式压力容器操作上岗证考试题及答案
- 贵州毕节中考试题及答案
- 道路人行天桥加装电梯导则(试行)
评论
0/150
提交评论