您的位置:首页 >资讯列表 > 正文
发布时间:2020-04-15 17:31
HTTP代理服务系统的买现与分析

  随着Intranet发展与应用的普及,对Intranet的安全,研究人员在许多方面都作了研究和探索,取得了有效的成就·在硬件层采用路由与主机屏蔽方式来限制非法用户对站点的访问;在网络IP层,采用支持安全协议的1 6等新的rp协议;在应用层进行信息的数字加密和用户的身伽人证等·防火*(FirewaII)是保护Intranet网络不受非法用户攻击的主要方案之一,它的结构可以依据硬件的分布和网络安全的程度而有所变化,就其原理而言,主要有基于网络IP层的包过滤防火*(Packet Filter)和基于应用层的代理服务器(proxy).代理服务器无论在大型网络还是小型网络中,都有很重要的作用,一方面它可以监测用户及数据包,起到防火墙的作用,另一方面,又可以记录网络的各种数据,以便于对网络的管理。


u=1576653977,3022687243&fm=11&gp=0.jpg


  web服务由于其数据量大,共享程度高,因而使总体访问速度较慢·提高web站点的访问速度,一方面提高网络的通信质量,另一方面提高数据访问的有效性.H'仃p代理服务是提高数据有效性的方法·本文就实际设计与实现


  H'仃P代理的过程作出分析·


  1HTTP原理与代理实现过程


  1.1HTTP协议


  客尸浏览器在请求一个web页面(如http://www.hubpu.edu.cn/index.html)时,它首先与服务器建立连接,连接成功后,它要将所请求的页面(含主机及文档),所用的协议及版本,语言及版本,所能接收的M丨ME类型,编码类型以及连接状况等一些本地信息参数等交送给服务器,web服务器收到请求后,发回所交送页面的信息的响应头信息(如协议认可,服务器类型,文档最后修改日期,长度等),然后才发送页面内容,最后双方断开联接.


  由于一个web页面中还可能包含有图象,声音,以及另外的超链接等,在客户机收到web页面后,搜索其中的图象链接和声音链接,然后再请求这些页面。因此,要完成一个完整的web页显示,必须通过建立多次的c/s请求和发送。


  从这个意义上来说,H'仃p是一个无连接,无状态的协议。以后客户要重新访问一个旧页面时,如果应用软件不支持本地CacheR存技术,则每次必须重新建立连接和传输数据。


  1.2 HTTP代理实现


  在H p代理中,代理服务器作为应用级网关,起到客


  户与服务器的桥梁作用·客户代理(如,Netscape)将自己的所有请求发给代理服务器,代理服务器监听到客户的连接请求后,首先验证客户的身份信息,通过之后,接收客户的请求数据,并解析出所要的服务器地址、端口、请求的文档等。接下来代理服务器通过自己的socket连接到所指定的服务器上,将客户的信息传递给web服务器,将web服务器的响应传递给客户.代理服务器应至少有两个socket来协调客户与web服务器的数据传输,一个是作为客户的服务器做侦听,另一个则作为客户向远程web服务器请求.对客户而,代理服务器是一个服务器,但对于web服务器而言,则是一个访问的客户.而且对于客户来说,代理服务器是透明的,除了在访问开始前对客户代理进行设置之外,客户可以忽略代理服务器的存在.代理服务程序工作过程如图


  在系统设计中,采用两个CAsyncSocket类的继承CCIientSocket和CWebserverSocket来分别实现与客户和web服务器的连接.由于CAsyncSocket是工作于异步的非阻塞方式,因此,在程序中,必须为这两个socket的连接同步定义同步变量。本系统中采用事件同步的方式来实现·


  BOOL bClientConnected=FA LSE;


  BOOL bConnectedTOServer=FALSE;


  HANDLE hEvent;


  {用CCIien tsoc ket接受客户连接,验证身份成功后,则使bCIientConnected:'I'R('E;}


  hEvent=CreateEvcnt(N(iLL,TRUE,FAI.SE,NULL);


  {用CWeb““Soc奴t连接到远程web服务器,连接成功后,设置事件SetEvent(hEvent))


  WaitForSingIeObject(hEvent,50000《));//使双方都连接成功后,方可继续,同步等待时间50s


  CloseHandIe(hEvent);


  {进行代理服务处理,接收一方的数据,发送给另一方,直到任一方断开连接}


  2优化的代理技术


  为了提高www的访问的速度,同时加强代理服务器的


  作者简介:张明武(1972、),男,硕士,主研方向:计算机网络,计算机接口技术,叩电话:陈启祥,硕士,讲师:楚惟善,教授:刘劲葵,硕士、工程师收稿日期:2佣0一07一31


  一]45一


  1监听2客户请求连接理服务器


  5传送给对方


  .接至远程Web服务Web服务器


  3身份验证代


  4请求页面


  6接收双方的数据,


  8断开连接对页面数据和响应头7断开连接


  用户管理,在系统设计过程中,采用了proxy Cachea冲技术和用户身份认证技术,提高系统访问及管理的有效性和高效性·


  图1 H P代理服务器工作原理


  2·1身份认证


  为了简化客户端的应用软件,本系统在不增加客户端任何软件或对其系统进行改变的情况下,对客户的身份进行认证·即采用主机名/IP地址识别法来确认用户的有效性·


  利用TCP/伊协议进行通信时,无论是何种应用协议,在传输层都转化成socket进行联接,两个socket之间利用五元组来实现联接和通信·socket五元组标识如下:


  {协议源伊地址源端口号目的地址目的端口}在代理服务程序进入监听状态后,在Listen()等待客户的联接请求,一旦有请求,则触发FD ACCEPT事件,在OnAccept事件处理函数中即可进行验证客户信息·实现主要过程如下:


  SOCKET socket;


  Sockaddr in m ClientSocket;


  socket.SockId=accept(ListenSocket,(struct socketaddr in)&socket.addr,&sizeof(m ClientSocket))


  if(socket.SockId==INAVLID_SOCKET)return false,


  CString IpAddr=inet ntoa(socket.addr.sin addr);


  //将网络《p转化为点分格式串


  if(IpAddr不满足条件)//判断IP地址是否满足条件return false,


  2·2 Cache技术


  cache技术是许多工程人员一直在研究的课题,现在也有一些比较成熟的技术产品·特别是对于H'仃p协议的代理缓冲技术,许多国家都有国家级的cache站点,这主要用来镜象一些远程的服务器·H、p的代理缓冲的目的也在于减少网络传输开销·


  当客户联接后,所提交的请求主要有4种:Get,put,Head,post.其中Get和Head请求是最多也是最频繁的请求·put和post这两个操作要向远程web服务器提交数据,Post操作还要启动CGI应用程序,因此它们利用缓冲区的意义不大·在本系统中,只对Get请求作出缓冲处理,对其它请求则直接由代理服务器发送给远程的web服务器·


  2·却缓冲结构


  代理缓冲区由于其数据量很大,而且更新速度与计算机速度对比起来是很慢的·因此,采用文件缓冲来作为缓冲区的存取方式·缓冲区管理主要在于缓冲区的存取、刷新与检索·


  代理服务器通过缓冲结构索引来管理存于硬盘上的实际web页面,以加强对缓冲区的管理和提高数据的采集速度。


  本系统所建立的索引表结构WebFILE INDEX如下·


  struct WebFILE INDEX int nlndex;//索引


  int nFromReqServer//与ReqSener关联项


  char strPathIMAX PATHI;//存入本地缓冲区相对路径


  一[46.一


  charstrExpire1401;//请求文档过期日期串SYSTEMTIME StoreTime//存入缓冲区时间


  struct WebFILE INDEX*pNext;//指向下一个节点


  }*IpWebFileIndex,WebFileIndex;


  结构WebFILE INDEX标识了一个web页面在本地缓冲区的相对于系统所设定的web代理缓冲区的相对路径,文档的过期串以及存入缓冲区的时间等·代理服务器维护着由这个结构组成的链表,并且不断更新这个链表·strExpire值是在H仃P进行请求远程web服务器后,作为响应传回来的·当表中的strE№ire超出规定的范围时,代理服务器对此节点进行删除·


  在代理服务器收到一个Get请求后,解析出服务器名与路径和文件,通过在结构Reqse“er中检索是否有此主服务器的数据已存,如果有,则通过其索引值在WebFlLE INDEX中去定位文件·系统是以服务器名来判断是否在WebFILE_1NDEX中搜索,即便服务器缓冲表中存在,所请求的页有可能已过期,或者根本不存在,需要重新向远程web服务器请求后交给客户并更新本地缓冲·ReqServer结构如下:


  struct ReqServer int ndx,


  int nToWebFile;//与WebFILE INDEX关联charstrServerName1501;//请求Web服务器DNS char strServerIP1161;//请求web服务器《P struct ReqServer*pNext;//指向下一个节点


  }IpReqServer'sReqServer;


  考虑到请求服务器时,即可以用域名DNS,也可以用伊地址来标识服务器,故Reqse“er中有两个元素标识服务器,在代理服务器向远程web服务器请求后,解析出相应的域名(DNS)或丨p地址,填入到结构表中,使两者保持地址一致,当不同的客户分别以DNS和伊地址来请求页面时,代理服务器能在缓冲区内定位到同一页面·


  2·2·2缓冲区的刷新


  代理服务缓冲区是不断更新的·当客户请求一个在代理缓冲区内已经过期的页面时,代理服务器必须向远程的web服务器请求新的数据信息,在送交给客户的同时,用新的数


  据刷新缓冲区,并刷新相应的参数(如Expire,StoreTime等


  对于一些更新周期极慢的页面(它以StoreTime,Expire作为衡量标准),一方面说明访问此页面的客户量较小,另一方面有可能此页面是一个失效的坏页面(如主机已取消等),因此需要对其进行清理·在缓冲容量满时,这些页面最先让出缓冲区·在代理服务器的起动,退出,空闲或定时的时间内,代理服务器要对缓冲区进行清理,去掉一些失效的页面·


  2·2·3超前的页面采集


  对于一些常用的比较多的web站点页面,在客户未请求时就可以自动更新,或当客户申请一个页面时,它把与之相联的超链接在客户点击之前就传过来,这就是超前的页面采集·超前的页面采集可以极大地提高用户访问的时效性,提高系统的速度和效率·本系统主要采取建立常用web站点库的方法,对于常用的站点,在系统空闲时,自动更新其缓冲区·


  3结束语


  要提高w曲服务的服务质量,一方面在web服务器端提高数据的检索速度和命中率,另一方面提高H p代理的智能化服务,减少网络负载,也是一种非常有效的方法·


上一篇 HTTP代理防火墙工具的原理与实现 下一篇 QQ http代理使用说明