




已阅读5页,还剩56页未读, 继续免费阅读
(计算机应用技术专业论文)代理机制研究与应用技术.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 代理服务类软件是互联网上重要的一类软件,是局域网通往 互联网的门户。研究和设计代理服务软件有很重要的理论和实际价值。 代堡! 睦务熬住是为了满足局域网访问i n t e r n e t 而设计的软 件,通过分析局域网中客户的请求,代理服务软件可以将客户的请 求转发给i n t e r n e t 。这样能够实现诸如多台机器通过一个i p 地址 上网、c a c h e 机制和简单的防火墙等功能。 本文在分析垡翼服务蚕的工作原理基础上,讨论了设计基本 代理服务器所需要用到的各种技术,并运用这些知识构造了一个模 型代理服务器。 在基本代理服务器理论的基础上提出了双向代理的概念。 实现了自定义协议的代理,并将其运用到百城联网工程的实 践当中。 讨论了网络中常用的访问限制技术,对几种多关键字的搜索 算法进行了比较,并提出了一种基于映射表的多关键字快速搜索算法。 比较了各种代理服务方式的优劣,探讨了l i n u x 操作系统中i p 伪装技术的实现方法。 代理机制研究与应用技术 a b s t r a c t p r o x ys e r v e r i s i m p o r t a n t i ni n t e r n e t i t st h e g a t e o fi n t r a n e t t o w a r d si n t e r n e t t h ew o r ko fr e s e a r c h i n ga n dd e s i g n i n gp r o x ys o f t w a r e i sv a l u a b l e p r o x ys e r v e ri sd e s i g n e d f o ri n t r a n e tt oa c h i e v ea b i l i t yt oa c c e s s i n t e r n e t t h r o u g ha n a l y z i n gt h ec l i e n ta p p l i c a t i o no fi n t r a n e t ,p r o x y s e r v e rc a nh a n d l eitt oi n t e r n e t ,w h i c he n a b l em u lt im a c h i n et oa c c e s s i n t e r n e tt h r o u g ho n l yo n ei pa d d r e s s i ta l s oa p p li e sf i l ec a c h ea n ds i m p l e f i r e w a l l t h r o u g ha n a l y z i n g t h eb a s i c t h e o r y o f p r o x ys e r v e r ,t h i sp a p e r p r e s e n t s v a r i o u s t e c h n i q u e s i n d e s i g n i n g a p r o x y s e r v e r w i t ht h i s t e c h n i q u e s am o d e lp r o x ys e r v e ri sc r e a t e d t h et h e o r yo fb i d i r e c t i o np r o x yi s b r o u g h tf o r w a r df r o mt h eb a s i c t h e o r yo fp r o x y s e l f - d e s i g n e dp r o t o c o l si sd e p u t i z e dw i t hp r a c t i c ew i t h i n “n e t w o r k i n g o fh u n d r e d sc i t i e s ”p r o j e e t v a r i o u sa c c e s sr e s t r i c t i o nt e c h n i q u e si ni n t e r n e ta r ed i s c u s s e d w it h t h e c o m p a r i s o n o fs e v e r a l m u l t i k e ys e a r c ha r t t h m e t i c ,as p e e d i n e s s m u l t i k e y s e a r c ha r i t h m e t i cb a s e do n m a p p i n gt a b l ei sp u tf o r w a r d w i t ht h ec o m p a r i s o no fv a r i o u sp r o x ym a n n e r s ,t h e i m p l e m e n t a t i o no f i pm a s q u e r a d i n gt e c h n i q u ei n l i n u xo p e r a t i n gs y s t e mi sd i s c u s s e d 代理机制研究与应用技术 致谢 首先要感谢我的导师康志伟先生。在我读研近三年时间里,无 论是在学习上还是在生活中,他都给予我谆谆教导和无私的关怀。 没有他的悉心指导和帮助,我不可能完成本论文的研究工作。 感谢我的同学方利智、刘相宾、陈兴华、陈坚、吴蓉晖、冷健、 周攀峰、宣翔、李军义等,感谢他们对我的论文提出诚恳的意见并 在诸多方面给予我无私的帮助。 感谢计算机系的老师,他们的教导使我得以将自己的水平迅速 提高。特别要感谢中科院计算所闵应骅教授对我的论文进行审阅并 提出修改意见。 感谢刘尚辉、杜传宝、赵今、张惠琼、朱佳慧、董传杰、戴幻 成、王宏伟、龚建新等同志,他们在我准备论文材料的时候给予了 我莫大的帮助。 衷心感谢我的父母,他们虽然不懂我的研究工作,可是他们在 生活上无微不至的照顾和精神上的鼓励。使我有勇气面对生活中的 一切。 代理机制研究与应用技术 第l 章引言 连接因特网时,最大的问题便是价格。租用一条高速连接线路以及整个子 网的i p 地址是非常昂贵的。这对中小型企业的上网是一个巨大的挑战,对普 及网上的电子商务是非常不利的。其次还有诸如i p v 4 的地址不够用,网络的 安全性,网络访问的速度等问题,迫使人们寻找更好的解决方案。其中之一便 是采用代理服务。 第1 1 节代理服务的功能与现状 1 1 1 代理服务的功能 代理服务的核心功能”有如下三种: 1 解决真实i p 地址不足的问题; 2 提供c a c h e 功能以加快i n t e r n e t 的访问速度; 3 提供对i n t r a n e t 适当的保护功能。 代理服务的出现最初的目的是要解决真实i p 地址不足的问题,这也是它 最主要的功能。由于最初设计t c p i p 协议族时将i p 地址设计为4 个字节宽度。 4 个字节最多能表示2 5 6 2 5 6 2 5 6 $ 2 5 6 = 4 ,2 9 4 ,9 6 7 ,2 9 6 种变化。也就是说世界 上平均每个人分不到一个i p 地址。这还是理论上的数目,实际上因为有些i p 地址有特殊的用途b 】( 如用于广播的i p 地址,用于本地回馈的i p 地址等等) , 实际可用的i p 地址就更少了。所以才出现了多台机器共用一个真实i p 地址的 情况。 代理服务出现后所带来的附加效益是提供带c a c h e 功能的i n t e r n e t 服务, 这样可以极大地加快i n t e r n e t 的访问速度。因为用户访问的信息,有很多是 重复的数据,例如一些著名网站的首页,一些热点新闻等。这些数据如果重复 地从网站服务器上获得,将极大地占用网络的带宽。代理服务器提供c a c h e 功 能后,重复的信息可以从代理服务器上获得,而不必从网站服务器上下载。有 的i s p 计算过,在不用代理服务器的情况下,其网络费用高达几百万元月, 而采用专用代理服务器后,其网络费用马上降到几万元月。c a c h e 的作用由 此可见一斑。现在有专用的c a c h e 代理,不再提供其它的代理服务功能。 代理服务器兼具一定的防火墙功能o “。随着网络的日益普及。网络的安全 也日显重要。有些机构希望保护自己的内部网络,但是又必须具备能访问 i n t e r n e t 的功能。装备专用的防火墙则价格昂贵且安装不易。由于代理服务 器将网络隔为内部网和外部网,它们之间的数据交换都必须通过代理服务器来 进行,所以代理服务器天生具备一定的网络保护功能。当然要具有强大的网络 安全性能,则必须采用较为复杂的设计或采用专用防火墙。 代理机$ 4 研究与应用技术 以上只是代理服务器的主要功能。随着网络技术的发展,很多复杂的功能 被加入到代理服务器当中。如下所述: 1 用户管理功能:可以设置让局域网中哪些用户可以上网,哪些不能上 网,或限制其可访问的区域。 2 记账功能:记录下用户浏览的时间和费用。对于小型局域网,能提供 这种服务是很方便的。 3 d h c p 、d n s 等:这些功能一般是由n t 服务器或其它专用服务器实现的。 较复杂的代理服务器能兼具这些功能,以方便用户的操作。 4 自动拨号功能( d i a lo nd e m a n d ) :自动拨号功能可根据用户的设置, 对需经拨号的访问请求提供自动拨号服务。在定时间内,如没有访 问请求,拨号链路将自动关闭。另外,有的代理服务器还提供电话号 码记录功能,可按用户预先设定的顺序进行拨号连接。 5 审计目志功能:可以帮助管理员了解用户访问请求的类型,以及何 时、何地( i p ) 、去何处、访问过哪些文件,同时记录代理服务其中的 各种服务的启动和关闭情况,以确保服务的正常运行。 6 r e a l a u d i o ,) ( d m a 代理:有的代理服务器支持r e a l a u d i o 以及x d m a 的 代理,支持r e a l a u d i o 播放器进行网络播放,支持使用x i n gs t r e a m w o r k s 音频视频的用户。 1 1 2现有代理服务解决方案 目前代理服务常用的有两种方案:一种是常规的代理服务器,如w i n d o w s 系统中使用的w i n p r o x y ,w i n g a t e 等0 7 3 9 ;另一种是n a t 类代理】,如l i n u x 系统内核支持的i p 伪装技术 2 町等。 常规代理服务器工作在应用层,对于每一种协议必须单独设计,对于用户 来说每一种协议都必须单独配置,因此有些常规代理服务器并不支持很多协 议。n a t 代理工作在较低的层次,用户配置比较简单,支持的协议也较多,但 不提供c a c h e 功能。 代理服务器上运行特殊的软件,允许局域网上的客户机提出访问请求,如 要求某个w e b 页面等。客户机并不直接访问因特网的某个网站去浏览所需的w e b 页面,而是把请求发给代理服务器,由代理服务器下载该w e b 页面,然后再把 它传送给客户机。这个过程对用户是透明的。 大多数常规代理服务器具有高速缓存( c a c h e ) 的功能。如果有多个用户 对同一个页面提出请求,它不必多次进行访问,该页面可以从c a c h e 文件中交 付给各个用户。如果由于某种原因,局域网管理员不想让用户访问某些网站, 代理服务器还可以起禁止通行的作用。这对像学校以及某些公司都是非常有用 的功能。 代理机制研究与应用技术 第1 2 节当前代理服务的问题和缺陷 代理服务介于用户与互联网之间,它的职责是传递用户与服务器之间的各 种数据,用户和服务器并不直接相连,这就不可避免会存在一些问题和缺陷 : ( 1 ) 对各种协议的支持程度。代理服务器不仅能提供w e b 访问服务,还 可以向外部世界传递给定协议的协议信息,然后把结果返回给客户 机。问题是,代理服务器必须配置网上运行的所有协议,这对视频、 音频流协议是存在一些问题的。 ( 2 ) 对应用程序的支持程度。如果用户要下载个t c p i p 程序,这个程 序设计的运行环境是因特网,那么它很可能难以在普通的代理服务 器上运行,软件很可能与代理服务器不兼容。另外,某些w e b 页面 在服务器和用户之间需要一些交互操作,也会产生闻题。j a v a 应用 程序如果一边运行一边不得不与服务器通信,也很容易产生故障。 ( 3 ) 对于某些应用会降低其运行效率。由于所有的数据都必须经过代理 才能传送给客户,代理服务器可能会成为传输的瓶颈。 ( 4 ) 由于代理的存在有可能导致地址出错。所有的数据传送均依赖于代 理,当代理映射表出错时,会导致地址映射错误。 ( 5 ) 代理隐藏了主机的存在,这增强了安全性,但也带来副作用。 ( 6 ) 对于后续协议的支持。由于代理服务一般是针对现有协议设计的, 当这些协议更改时,代理服务可能会出错。因此作为长期解决方案 是存在问题的。 尽管这些问题不是都能解决,但是采用n a t 代理的技术,由于工作在较低 的层次上,其效果优于常规的代理服务器,并且客户端的配置更为简单。 第1 3 节本文所做的工作 在熟悉网络的原理和编程的基础之上,本文做了如下工作: ( 1 ) 分析了代理服务的基本工作原理,讨论了在设计代理服务中所需要 用到的技术如t c p i p 协议、套接字编程、多线程技术等,并运用这些知识构 造了一个模型代理服务器。 ( 2 ) 在基本代理服务理论的基础上提出了双向代理的概念。一般的代理 是单向的,双向代理可以提供从局域网对i n t e r n e t 的访问,也能提供i n t e r n e t 对局域网的访问。这种方式用于构造e x t r a n e t 较为合适,但是网络的安全性 能要求更高。 ( 3 ) 实现了自定义协议的代理,并将其运用到百城联网工程的实践当中。 通用的代理服务器般只能代理常用的应用协议如h t t p 、f t p 等。而一些用户 代理机制研究与应用技术 自定义的协议则一般不予支持。如果要使代理服务器支持自定义协议,则必须 使用自己设计的代理服务器。 ( 4 ) 讨论了网络中常用的访问限制技术,对几种多关键字的搜索算法进 行了比较,并提出了一种基于映射表的多关键字快速搜索算法。 ( 5 ) 比较了各种代理服务方式的优劣,探讨了l i n u x 操作系统中i p 伪装 技术的实现方法。 代理机制研究与应用技术 第2 章代理机制基本原理 本章讲述代理服务的基础知识,首先分析代理服务基本工作原理。然后介 绍与代理有关的知识如t c p f l i p 协议族、套接字、多线程等。并利用这 些基础知识构造了一个具备基本功能的代理服务器。 第2 1 节代理服务工作原理 2 1 1代理服务器线路连接方式 有的代理服务器支持多种线路出口方式。将几种互连结构混合连接使用, 局域网可以共享出口线路访问i n t e r n e t ,这样可以大大提高出口线路的利用 率。 i 简单的m o d e m 连接 这是利用代理服务器访问i n t e r n e t 最简单的方法。用户将i s p 提供的电 话号码设置好即可。另外,作为代理服务器的计算机中应有一块网卡与局域网 相连,其i p 地址应属于局域网的网段。 2 多种链路混合连接 采用多种链路混合连接( 如m o d e m ,i s d n ,网络直接连接等方式) ,可充分 利用现有的各种出口线路资源,提高访问速度,增强出口线路的安全性。当某 一线路出现故障时,代理服务器自动将访问请求转发到正常线路上。对于需要 传输或下载大量数据的用户来说,这种互连结构比较安全。 3 与多路复用设备连接 一般说来,多路复用设备( 例如w e b r a m p 、i n t e r n e t s h a r e 等硬件设备) 本身就可以直接连接到局域网中,用户仅通过它们便可以共享少量线路访问 i n t e r n e t 。但这些设备往往只具有线路复用的功能,其管理能力较差,有时会 产生网络阻塞情况( 如i p 地址冲突、线路过分拥挤等等) 。代理服务器的管理 功能与多路复用设备结合共同完成i n t e r n e t 任务,可以同时发挥两者的优势。 2 1 2 代理服务器的配置 1 客户端的配置 客户端的配置目的是使客户机知道代理服务器的位置,以便将数据传送到 代理服务器。所以客户端的配置主要是知道代理服务器的i p 地址。但是w i n d o w s 操作系统本身并不直接支持通过代理访问i n t e r n e t ,所以针对每个应用程序, 都必须自己设计支持代理的程序。所以代理服务器地址的配置也因不同的客户 端程序而不同。以i e 为例,必须选择菜单中的i n t e r n e t 选项,再选连接,然 代理机制研究与应用技术 后添入代理服务器的i p 地址和端口号。这里我们注意到其中可以填写多种协 议的代理服务器地址。也就是说这些协议的代理服务器可以不是同一个。对其 它的应用程序要根据其具体的要求对其进行配置。有些程序并不支持代理功 能,如m i c r o s o f to u t l o o k 等,只有借助于其它的方法。 2 服务器端的配置 服务器端的配置要根据代理服务器的作用来区分。有的代理服务器主要目 的是提供高速访问,如有一些公司具有高速i n t e r n e t 线路,他们向外提供服 务,使一些远程客户也能享受到较高的速度。这时服务器端往往只配备一块网 卡,硬件上不需特殊的配置。而有的代理服务器是要跨网段服务的。即代理的 一端是互联网,另一端是局域网。这种代理服务器一般需配备两个网络设备, 同时也必须配置其相应的软件。 2 1 3 代理的基本工作原理 如图2 - 1 所示,代理服务器一般处在局域网到i n t e r n e t 的通路之间。代 理服务器本身是局域网的一台服务器,所以它能和局域网的其它机器交流数 据:同时代理服务器又具有真实的i p 地址,所以它又能访问i n t e r n e t 。而由 于真实的i p 地址数量有限,局域网的其它机器大多可能不具有真实的i p ,它 们要访问i n t e r n e t ,就只有借助于代理服务器了。 图2 - i 代理服务器连接示意图 局域网的客户机要访问i n t e r n e t ,其浏览器的i n t e r n e t 选项中只要填好 代理服务器的i p 地址和端口号即可( 有经验的上网者对此应该很熟) 。访问 ,i ,n t e r n e t 时,客户机的数据包实际上是先发送到代理服务器,代理服务器对 警訾挚据粤稍做处理后即转发到i n t e r n e t 上:从i n t e r n e t 上传送回来的数据 也是先由代理服务器接收,然后转发给局域网的客户机。 代理机制研究与应用技术 虽说如此,实际上实现起来并不容易。从客户机发送到代理的数据包中包 含的是局域网的i p 地址,如果直接把这些数据发送到i n t e r n e t 中去,肯定会 出错,所以必须把内部的i p 地址替换成真实的i p 地址。从i n t e r n e t 上传回 的数据也存在同样的问题。如果要更换i p 地址的话,是不是意味着我们要修 改t c p i p 协议呢? 那样的话可就较复杂了。实际上一般的代理服务器都是工 作在应用层的,同样可以将i p 地址更换掉。 如图2 - 2 所示,客户机中的数据发送出来,经过t c p i p 协议的处理,被 加上了t c p 头和i p 头,当然此时i p 头中的i p 均是采用内部的i p 。这些数据 传送到代理服务器中后,代理服务器并不是直接将内部i p 给转换过来。它首 先要将数据解包,去掉t c p 头和i p 头。然后再重新打包,加上新的t c p 头和 i p 头,当然此时数据包中包含的已经是真实的i p 地址( 实际上是该代理服务 器的i p 地址) 。这些数据就可以被发送到i n t e r n e t 上去了。从i n t e r n e t 上传 回的数据也必须经过类似的过程。 内部i p真实i p hhh 卜_ - 口勺叼_ = 头头头头 一_d一 n 号号 n 勺 _ 。 解包并重新封装 头头头头 数数l 数 斗 数数 据据 p 据 据据 ij t 这中间有一个问题。大家都知道,在i p 头中包含有源地址和目标地址。 在上述过程中,解包这一步骤会把原来的t c p 头和i p 头都去掉,这样源地址 和目标地址都会丢失。目标地址丢失后,代理服务器将不知道把数据传送到哪 里。在重新封装时也就不知道该加上什么i p 地址了。( 实际上从客户机发出来 的数据包中,源地址是客户机的i p 地址,目标地址是代理服务器的内部i p 地 址,所以原始数据包本来就没有包含远端i n t e r n e t 服务器的i p 地址。) 既然t c p 头和i p 头中没有有效的数据,那就只有从数据块本身想办法了。 难道数据块中包含了远端服务器的i p 地址吗? 我们先来分析一下数据块到底 都是一些什么数据。一般来说,在t c p i p 之上的当然都是一些应用协议了, 也就是如:h t t p 协议、f t p 协议、t e l n e t 协议等等。我们就拿h t t p 协议来看 看吧。h t t p 协议中无非就是些如g e t 、p u t 、p o s t 之类的原语。当客户机向 代理机制研究与应用技术 w e b 服务器发送获取文件的请求时,就是使用g e t 原语,如:g e t b ! 兰卫;! ! 璺! :曼墨:! 坚:d l ! 堡! 曼q ! ! 旦:b ! 翌! 正如上所示,g e t 原语中包含了远端服务器的u r l 地址,既然有了u r l 地 址,要得到i p 地址就很容易了。所以说代理服务器在获得数据块之后,要分 析其中的原语并找到远端服务器的g i l l 地址,才能顺利地把数据传送到 i n t e r n e t 上( 这中间无可避免地要造成一定程度的延时) 。对h t t p 协议如此, 对f t p 、t e l n e t 等也是如此。这也是为什么我们在客户机中填写代理服务器的 地址时,每一种协议都可以填它自己的代理服务器地址和端口号。而且有些代 理服务器并不支持所有的协议。 第2 2 节t o p i p 协议族 t c p i p 协议族是本论文中使用到的最重要的基础知识。代理机制中很多源 自于t c p i p 协议,尤其是采用i p 伪装方式。本节主要分析t c p i p 的基础知 识以及如i c m p 、i g p 、e g p 等协议。 2 2 1 t c p i p 协议基础 1 基本概念: 在计算机网络协议层次结构中,服务共分为六种不同类型:可靠的报文流、 可靠的字节流、不可靠连接、不可靠的数据报、有确认的数据报、请求应答。 作为通信子网的i p 层提供数据报传输,t c p 实现面向连接的可靠的报文流。 这里t c p 不管子网内部结构如何,仅仅把子网作为一个通信服务提供者。为实 现可靠性,t c p 采用确认与超时重传机制;为实现顺序的报文流,t c p 采用滑 动窗口机制:为保证数据的正确性,t c p 采用若干差错检验、报告和纠正措施。 t c p i p 采用端到端的工作方式。 2 t c p i p 分层模式: 如图2 - 3 所示,t c p i p 模型由四个层次组成。 概念层次层次传递的对象 一报文流 一传输协议分组 + i p 数据报 网络帧 图2 - 3t c p i p 协议分层 一一一一一 代理机$ 研究与应用技术 其中传输层的功能包括:格式化信息流;提供可靠传输。网络层的功能包 括:处理来自传输层的分组发送请求;处理输入数据报:处理i c m p 报文。 3 网络地址: i p 协议提供一种全互联网通用的地址格式,并在统一管理下进行地址分 配。按网络规模大小,将互联网地址分为主要的三类:a 类、b 类、c 类。地 址解析采用动态联编a r p 协议。域名采用层次型命名机制。 2 2 2i p 协议族: 1 i p 协议数据格式 i p 层作为通信子网的最高层,提供无连接的数据报传输机制。i p 数据报 协议非常简单,不能保证传输的可靠性。i p 协议采用点到点方式,i p 层对等 实体间的通信不经过中间机器,对等实体所在机器位于同一物理网络,拥有直 接的物理连接。其数据格式如下 版本头标长l 服务类型总长 标识标志片偏移 生存时间协议头标校验和 源i p 地址 信宿i p 地址 数据填充域 2 差错与报文控制 i c m p 是一种差错和控制报文协议。在中间网关发现传输错误时,立即向信 源机发送i c m p 报文,报告出错情况,以便信源机采取相应的纠正措施。它不 仅用于传输差错报文,而且用于传输控制报文。i c 卿报文格式如下: j 类型f 代码i 校验和l数据区i i c i p 差错报文包括信宿不可到达报告、超时报告、参数出错报告等。 i c m p 控制报文包括拥塞控制、路径控制两大内容,采用源抑制报文和重定 向报文。 3 数据报寻径 寻径是分组交换系统中的一个重要概念,是寻找一条将分组从信源机传往 信宿机的传输路径的过程。网关寻径采用的原则是最短路径优先。i p 寻径的 总控算法如下: 垡堡塑! ! 婴窒兰壁里垫查一 r o u t e j po a t a g r a m ( d a t a g r a m ,r o u t i n gt a b l e ) 从数据报取出信宿i p 地址i 。 计算信宿网络i p 地址i 。 i fi 。匹配直接连接的网络地址 t h e n 向目的机直接传送数据报 e l s ei fi 。是特定主机寻径 t h e n 按寻径表发送数据报; e l s ei fi 。出现在寻径表中 t h e n 按寻径表发送数据报; e l s ei f 寻径表中指定了默认路径 t h e n 将数据报发往默认网关 e l s e 宣布寻径出错 图2 4i p 寻径总控算法 4 i n t e r n e t 路径建立与刷新 i n t e r n e t 中的对象概括起来分为主干和外围。主干的主要部分是主干网络 和连接主干与外围的网关( 核心网关) 。外围部分采用若干自治系统。因此, 在整个体系结构上,i n t e r n e t 构成树型组织方式。其寻径结构也是类似的树 型结构。 为获取路径信息,i n t e r n e t 采用能自动获取路径信息的协议如内部网关协 议( i g p ) 和外部网关协议( e g p ) 。在i n t e r n e t 中,网关寻径表通过网关之间 周期性地交换( 主要是广播) 路径信息而建立和刷新。用于寻径表刷新的有向 量一距离算法、链接一状态算法等。采用向量一距离算法的典型例子有网关一网关 协议( g g p ) 。 外部网关协议用于在两个自治系统之间的寻径交换信息。e g p 的三大功能 是:邻机获取、邻机测试、与e g p 邻机交换寻径信息。 内部网关协议用于自治系统内部的路径信息交换。i o p 提供了网关了解本 自治系统内部各网络路径信息的机制。常用的协议有寻径信息协议( r i p ) 、h e l l o 协议等。 2 2 3 t c p 协议族: 传输层的作用是向信源机与信宿机提供端到端数据传输。其中u d p 适用于 可靠信较高的局域网,t c p 适用于可靠信较差的广域网。 1 传输层连接管理 在建立传输连接之前,必须显式地给出全局唯一的信宿端的地址。可以用 以下三个域标识:f n s a p ,t s a p ,主机地址) 。为消除重复连接请求,传输层多 代理机制研究与应用技术 采用三次握手方法。在传输时使用滑动窗口,既可以充分利用连接所提供的网 络能力,又能保证可靠性。 2 用户数据报协议u d p u d p 建立在i p 协议之上,同i p 协议一样提供无连接数据报传输。相对于 i p 协议,它唯一增加的能力是提供协议端口,以保证进程通信。基于u d p 的 u d p 源端口u d p 信宿端口 u d p 长度u d p 校验和 数据 3 传输控制协议t c p t c p 提供面向连接的流传输。t c p 采用的最基本的可靠性技术是:确认与 超时重传。t c p 流的特点是无结构的字节流,采用累积确认方式。t c p 确认针 对流中的字节,而不是段。接收方确认以正确收到的、最长的、连续的流前部 ( p r e f i xo ft h es t r e a m ) ,每个确认指出下一个希望接收的字节( 比流前部 字节数大l 的位置) 。通过控制发送窗口的大小控制拥塞。t c p 报文结构如下 源端口信宿端口 序号 确认号 l e n 保留码位窗口 校验和紧急指针 选项填充字节 数据 第2 3 节套接字编程与封装 代理服务器工作在应用层,要对底层的协议进行操作。最好的办法是通过 套接字。这样代理服务器不用去理会底层协议是怎样工作的,只需按套接字提 供的功能调用即可。 2 3 1s o c k e t 系统调用 s o c k e t 编程界面由4 b s du n i x 首先提出,目的是解决网间网进程通信问题。 s o c k e t 提供给应用程序员的最终界面是一组系统调用。 1 创建s o c k e t s o c k e t ( ) 调用格示:s o c k i d = s o c k e t ( a f ,t y p e ,p r o t o c 0 1 ) ,其中 ( 1 ) a f ( a d d r e s sf a m i l y ) ,地址族,指出本s o c k e t 所用的地址类型。 包括: a f u n i x :u n i x 内部地址 a f i n e t :t c p i p 地址 afns:xeroxn s 地址 a f i m p l i n k : a r p a n e ti m p ( 接口报文处理机) 地址 a f a p p l e t a l k :a p p l e 公司a p p l e t a l k 地址 ( 2 ) t y p e ,类型,只创建s o c k e t 的应用程序所希望的通信服务类型。同 一协议族可能提供多种服务类型。 s o c ks t r e a m :流s o c k e t s o c kd g r a m :数据报s o c k e t s o c kr a w :原始s o c k e t s o c ks e q p a c k e t :定序分组s o c k e t s o c kr d m :可靠发送的信息 ( 3 ) p r o t o c o l ,协议,指出本s o c k e t 请求所希望的协议。 2 指定本地地址b i n d ( ) 系统调用 调用格式:b i n d ( s o c k i d ,l o c a l a d d r ,a d d r l e n ) ,其中: ( i )s o c k i d ,是一个未命名s o c k e t 的s o c k e t 号。 ( 2 ) l o c a l a d d r ,本地s o c k e t 地址,指定本地半相关的其余两元:本 地主机地址和本地端口号。其中t c p i p 使用的是s o c k a d d r i n ,其 数据结构为: s t r u c ts o c k a d d r _ i n s h o r t s i n f a m il y :* a f i n e t u s h o r t s i n _ p o r ti1 6 比特端口号,网络字节顺序 s t r u c ti na d d rs i na d d r : * 3 2 比特i p 地址,网络字节顺序 * i c h a r s i n z e r o 8 ;丰未用 ) ( 3 )a d d r l e n ,地址长度,指出以字节为单位的地址结构的长度。其典 型取值为s i z e o f ( s a ) ,其中s a 为指向s o c k e t 地址的指针。 3 建立s o c k e t 连接c o n n e c t ( ) 与a c c e p t0 系统调用 这两个调用用于完成整个相关的建立。其中c o n n e c t 0 用于建立连接。 c o n n e c t ( ) 的调用格式如下: c o n n e c t ( s o c k i d ,d e s t a d d r ,a d d r l e n ) 其中: ( 1 )s o c k i d ,是欲建立连接的本地s o c k e t 号。 ( 2 ) d e s t a d d r ,是一个指向对方s o c k e t 地址( 信宿地址) 结构的指针。 ( 3 )a d d r l e n ,指出对方s o c k e t 地址长度。 a c c e p t ( ) 用于面向连接的服务器,其调用格式为: n e w s o c k = a c c e p t ( s o c k i d ,c l i e n t a d d r ,p a d d r l e n ) 其中: ( 1 )s o c k i d ,本地s o c k e t 号。 代理机制研究与应用技术 ( 2 )c l i e n t a d d r ,指向客户s o c k e t 地址结构的指针。 ( 3 )a d d r l e n ,客户s o c k e t 地址长度。 4 1 i s t e n 0 调用 l i s t e n ( ) 在a c c e p t ( ) 之前调用,表明它愿意接收连接,其格式为: l i s t e n ( s o c k i d ,q u e l e n ) 其中: ( 1 )s o c k i d ,本地s o c k e t 号,服务器愿意从它上面接收请求。 ( 2 ) q u e l e n ,请求队列长度。目前允许的最大值为5 。 5 发送数据w r i t e ( ) 、w r i t e v ( ) 、s e n d ( ) 、s e n d t o ( ) 、s e n d m s g ( ) 其中w r i t e ( ) 、w r i t e v ( ) 和s e n d ( ) 用于面向连接传输,其余两个用 于无连接传输。其格式为: w r i t e ( s o c k i d ,b u f f ,b u f f l e n ) :缓冲发送 w r i t e v ( s o c k i d ,i o v e c t o r ,v e c t o r l e n ) :集中发送 s e n d ( s o c k i d ,b u f f ,b u f f l e n ,f l a g s ) :可控缓冲发送 s e n d t o ( s o c k i d ,b u f f ,b u f f l e n ,f l a g s ,d s t a d d ,a d d r l e n ) 可控集中无 连接发送 s e n d m s g ( s o c k i d ,m e s s a g e ,f l a g s ) :可控集中无连接发送 6 接收数据一一r e a d ( ) 、r e a d y ( ) 、r e c v ( ) 、r e c v f r o m ( ) 、r e c v t n s g ( ) 接收数据系统调用与发送数据系统调用是一对应的。 2 3 2 m f c 中的w i n s o c k w i n d o w s 系统的a p i 函数中实现了b s du n i x 的套接字。但是b s du n i x 的 套接字比较复杂,使用的参数很多。为此w i n s o c k 标准定义了一个d l l 接e l , 通常叫做w i n s o c e d l l 或者w s o c e 3 2 d l l 。v i s u a lc + + 中的套接字编程意味着 将a p i 的调用放入d l l 中。m f c 引进了两个类:c a s y n c s o c k e t 和c s o c k e t ,其 中c s o c k e t 是由c a s y n c s o c k e t 派生而来的。其继承关系如下: 图2 - 5m f c 的w i n s o c k 类继承关系 由于w i n d o w s 编程是异步的,应用程序的一部分陷入一个循环或挂起时, 整个应用程序将停住或者挂起。而一个套接字调用,可能是次通过t c p i p 连接读取另外一个i n t e r n e t 站点的信息的调用,可能需要一个很长的时间来 完成。要解决此问题有三种方法: 代理机制研究与应用技术 1 将一个可能引起阻塞的函数放置在自己的线程中。此线程可能将会阻 塞,但是应用程序的其它部分将继续运行。 2 使函数在发出请求后立即返回,同时由另外一个定期监测( 轮询此套 接字插口) 来查看请求是否完成。 3 使函数在发出请求后立即返回,在请求完成时发送一条w i n d o w s 消息。 c h s y n c s o c k e t 使用的是第三种方法。这便是异步w i n s o c k 编程。 2 3 3同步s o c k e t 编程 由于m f c 提供的s o c k e t 编程采用异步的方式,其使用较为复杂。另外, 由于m f c 的许多代码是从1 6 位移植到3 2 位的,其中有许多代码仍是采用1 6 位w i n d o w s 编程方式。对于实现真正的3 2 位同步编程会造成潜在的问题。为 此在设计代理服务器时,需要对w i n d o w s 有关s o c k e t 的a p i 函数重新封装。 重新封装的信息如下( 仅包含类的申明) : 重新定义t c p i p 的地址族如下: c l a s sc s o c k a d d r :p u b l i cs o c k a d d r i n ( p u b l i c : 构造函数 c s o c k a d d r0 ( s i nf a m i l y = a f _ i n e t : s i n - p o r t = 0 : s i n a d d r ,s _ a d d r = 0 :) 默认的参数,当没有实际参数时,协议族为t c p i p ,其余参数为0 c s o c k a d d r ( c o n s ts o c k a d d r & s a )f m e m c p y ( t h i s ,& s a s i z e o f ( s o c k a d d r ) ) : c s o c k a d d r ( c o n s t s i z e o f ( s o c k a d d r i n ) ) : s o c k a d d r _ i n & si n ) 采用指针的方式 c s o c k a d d r ( c o n s tu l o n gu l a d d r ,c o n s tu s h o r tu s h p o r t = 0 ) p a r m sa r e h o s tb y t eo r d e r e d s i nf a m i l y = a fi n e t : si n _ p o r t = h t o n s ( u s h p o r t ) : s i n a d d r sa d d r = h t o n l ( u l a d d r ) :) c s o c k a d d r ( c o n s tc h a r * p c h l p ,c o n s tu s h o r tu s h p o r t = 0 ) d o t t e di p a d d rs t r i n g ( s i n f a m il y = a f i n e t : s i n _ 2 ) o r t = h t o n s ( u s h p o r t ) : s i n a d d r s _ a d d r = i n e t a d d r ( p c h l p ) o r d e r e d 代理机制研究与应用技术 f r e t u r nt h ea d d r e s si nd o t t e d d e c i m a l f o r m a t c s t r i n gd o t t e d d e c i m a l0 ( r e t u r ni n e t _ n t o a ( s i na d d r ) :) c o n s t r u c t sa n e wc s t r i n go b j e c t g e tp o r ta n da d d r e s s ( e v e nt h o u g ht h e y r ep u b l i c ) u s h o r tp o r t ( ) c o n s t r e t u r nn t o h s ( s i np o r t ) :) u l o n gi p a d d r ( ) c o n s t ( r e t u r nn t o h l ( s i na d d r s _ a d d r ) :l o p e r a t o r sa d d e df o re f f i c i e n c y c o n s tc s o c k a d d r & o p e r a t o r = ( c o n s ts o c k a d d r & s a ) m e m c p y ( t h i s ,& s a ,s i z e o f ( s o c k a d d r ) ) : r e t u r n * t h i s :) c o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025渭南合阳县煤炭事务中心招聘(12人)笔试参考题库附带答案详解
- 2025河南商丘市实达国际人力资源合作有限公司招聘辅助人员30人笔试参考题库附带答案详解
- 2025年京能服务内蒙分锡林郭勒项目招聘10人笔试参考题库附带答案详解
- 广东新安职业技术学院《英语翻译实践》2023-2024学年第二学期期末试卷
- 中国传媒大学《生物医学检验技术》2023-2024学年第二学期期末试卷
- 上海外国语大学《华为HCIA-GausDB应用开发》2023-2024学年第二学期期末试卷
- 华东理工大学《商业伦理》2023-2024学年第二学期期末试卷
- 江苏航运职业技术学院《论文成果》2023-2024学年第二学期期末试卷
- 阜阳师范大学《焊接结构》2023-2024学年第二学期期末试卷
- 沈阳城市建设学院《传感器技术理论教学》2023-2024学年第二学期期末试卷
- 安全教育拒绝吸烟酗酒教学课件
- 《助理工程师大纲》word版
- 《地质聚合物混凝土》PPT课件
- 怎样做融资融券 (1)
- 屋面防水维修工程施工组织设计
- 糖尿病的并发症1
- 陕西省市政工程消耗量定额(1)
- 超星尔雅学习通《现场生命急救知识与技能》章节测试含答案
- KPMG_SOX_法案内部控制矩阵培训资料(powerpoint 39页)
- “珠江专科医疗联盟”推进学科发展的实践与创新PPT课件
- 小学心理活动课我是集体中的一员
评论
0/150
提交评论