您的位置:首页 > 代理IP资讯
发布时间:2020-02-29 15:36:26
修改电脑ip流量统计及IP控制软件的设计与实现

  代理服务器在当今Internet和Intranet领域已成为一个热门的话题,各种协议的代理服务器在网络的各层都得到了应用。本文提出了自代理的概念,分析了一种基于代理服务器原理的HTTP流量统计及访问站点IP控制软件的实现方法,所研制的软件已在南京邮电学院校园网内得到了应用。


  由Internet的飞速发展引发出的一个日益严重的问题便是网络安全。如果一个企业每一台电脑都直接和Internet相连,其安全性将成为一大难题,因此防火墙、代理服务器便应运而生。防火墙起着内部网和外部Internet的隔离作用,保护内部电脑不会受到外部的攻击。内部网要访问外部资源就必须使用代理服务器。图1给出一种常见的代理服务器应用结构。图中所示防火墙挡住了任何源地址或目的地址为A、的IP包,只允许C机的包可自由出入。A、需要访问外部Internet便向代理服务器C机发出请求,由C机和外部主机建立连接,转发请求。


  当然,代理服务器的使用不仅是从安全性来考虑,而且在共享资源、计费管理上也都有其优点。


  代理服务器有多种类型,目前应用最多的一类代理服务器就是HTTP的代理服务器,因为如今In ternet上最流行的服务便是基于HTTP和HTML的Web应用服务,也就是常说的主页、浏览器所涉及的服务。各种企业机构通过专线把企业内部网连到Internet上,又通过防火墙把内外网络隔离,然后通过HTTP的代理服务器为内部人员提供服务。专线方1式通常难于象电话拨号那样采用按时间计费,这时代理服务器便为计费提供了方便。


  图1一种常见的代理服务器应用结构基于代理服务器的计费,目前基本上都是采用事后计费。对于HTTP代理服务器,也就是根据代理服务器软件记录的日志文件,统计出浏览器每次请求所接收到的流量,然后可以根据固定的源IP来进行收费,或者可根据用户在代理服务器上的帐号来进行收费。现在一般趋向于采用第二种方法,因为第二种方法灵活,不怕盗用IP,可在任选一台连网的计算机上使用。


  目前,中国教育网内部确定的计费原则是:访问国外网站要收费,访问国内网站收费与否由各校自定,若收费,也要比访问国外网站低很多。这一方面是鼓励各校积极利用Internet资源为教育科研服务,另一方面从出口带宽原因考虑,用收费来加以限制。基于这个收费原则,代理服务器计费时就要考虑每次请求的目的站点IP是在国内还是在国外,分开进行流量统计。CERNET网络中心公布了一份国内IP列表,以此作为计费依据。目前各高校的做法一种是开放国内IP路由,凡目的IP属于国内IP表范围内的IP包,可以自由出入防火墙,而不属于国内IP表范围的IP包则被过滤掉,只允许少数从代理服务器、Web服务器等发出的IP包通过。用户要访问国外站点,则必须要经过代理服务器。另一种做法是防火墙挡住了所有源地址为普通用户机器的IP包,只允许一些服务器发出的IP包通过,用户只要访问校外站点则必须要经过代理服务器。对于用户来说,如校园网采用第一种做法,则在各站点穿梭时,一旦链接到国外网站,则会无法建立起连接,此时,必须手工从浏览器选项菜单中打开代理服务器设置才能访问。而如果校园网采用第二种做法


  户始终把代理服务器选项打开,也就是所有请求都要经过代理服务器,则用户常常无法区分访问的站点是国内的还是国外的,可能在不知不觉中已经花了不少不想花的费用。因为不少国内网站还没有包含在国内IP列表中,还有大多数国内网站都有到国外的链接,常会使用户不小心连到国外网站上外,不少国内网站为了提高点击率,在进入一个页面后常常设计成会自动连接国外的广告站点示一幅图片等。另外,由于采用事后计费宅电话一样,用户不知道已经花了多少费用。一般常常是一天甚至一个月后用户才能知道花费。鉴于以上种种因素,笔者设计并开发了名为Chamberlain(IP管家)软件,其基本功能就是帮助上网用户分类控制浏览站点,统计每次浏览及累计的字节流量。


  2软件设计的原理


  21基本思想


  IP Chamberlain软件基本思想也是基于代理服务器原理,本文称之为自代理技术。所谓自代理也就是软件在本机上开设一个代理服务器,


  端软件经由本机的代理服务器连出去。对于来说,就是把浏览器的代理服务器项设为本机地址当然也要专门指定一个TCP端口作为代理的服务端口。这样所有浏览器请求都将经过本机代理发出去,而此代理软件可以继续向下级代理发出请求可以直接向服务站点发出请求,相当于每一次请求都经过了一层过滤。


  HTTPRFC1945[1]所定义的超文本传输协议(HTTP,Hyper Text Transfer Protocol),可以说是基于TCP上的非连接协议。其工作过程是:浏览器每次和对方服务器建立一个TCP连接,然后发送一次URL;服务器接到请求后,给出应答和请求的数据;每次一问一答后,连接即告结束。对于一个新的请比如用户的一次点击,便重新发起连接。


  23代理服务器的设计


  由于所开发的软件实际上是一个代理服务器软件,从设计上根据代理服务器特点出发,它首先是一个服务器软件,具有一般服务器软件的特征。同时,对于目的服务器端来说,代理软件又扮演客户软件角色。对于浏览端,软件将从服务器角度对HTTP进行一定的解释;而对于下一级代理服务器或目的Web服务器,软件又将从客户角度对HTTP进行解释。也就是说,一个对请求头进行解释,一个对应答头进行解释。


  基于TCP的服务器软件的基本的流程就是开设一定的服务端口,等待客户软件连接。每接收到一次请求就另创建一个连接,进行处理,同时继续等待其它请求。这种服务器又称为并发服务器,也就是服务器可以同时处理多个服务请求。作为HTTP的代理服务器来说,支持并发是必须的,因为浏览器通常会创建多个连接同时下载某一页面的多幅图片,而用户也通常会打开多个浏览器窗口,同时访问多个网站。代理服务器接收到客户端请求后,还要向目的服务器发起连接,从而在客户和目的服务器间架起桥梁,并转发根据需要而处理过的数据。由于代理服务器扮演一个中介的角色,对于每一边的状态都要及时反应到另一边。比如某一边异常断线,就要及时通知另一边,切断连接。


  3软件的实现


  31编程工具


  本文编程工具环境的选择也是从代理服务器的特点出发。一方面,该软件是运用在客户端的服务器软件,使用者是普通用户,操作平台基本上是Mi crosoft Windows/Windows NT系列,所以该软件也应针对Windows系列操作系统并应该有友好的界面和尽量简单的操作。另一方面,该软件属于服务器软件,也要从系统开销、可靠性方面考虑。为此,笔者采用


  了Microsoft Visual C++。一方面VC也是Microsoft的产品,和操作系统结合性比较好,它提供的MFC


  类库体系对操作系统调用进行了较好的封装,便于使用。另一方面,对于开发服务器软件来说,它的类库体系只是对系统进行了一层薄层封装,特别对于网络方面,开发者发挥余地较大。而它生成的目标代码占内存空间小,效率高,对于常驻内存型的服务器软件,这点很重要。浏览器本身也是耗内存型的软件,特别对于开多个浏览窗口,内存需求更大。


  32软件的构架


  软件采用面向对象的方法,充分利用了VC的对象功能。在网络功能方面,MFC中对传统的


  Winsock API进行了封装,提供了CAsyncSocket、


  CSocket几个类,比起Winsock API方便了不少,同时开发者也可以随时调用Winsock API,扩充功能。软件基本构架如图2所示。


  图2软件基本构架


  在图2中,两边分别是浏览器和下级代理服务器。主控对象负责创建和管理其它对象,随时与其它对象进行通信。一个专门的Socket对象C负责接收浏览器的请求,接收到连接请求后,通知主控对象,另产生一个Socket对象A负责和浏览器进行交互。在这之前,Socket对象C还负责对源IP和当前已建连接数进行判断,以决定是否允许连接。这主要是考虑限制一下总连接数,以保持系统稳定。同时本代理服务器主要为本机服务,如果有其它微机发出连接请求,可以根据用户的设定而予以拒绝。


  对象A充当服务器的角色,为浏览器客户进行服务。它将负责对浏览器发出的HTTP请求头进行处理,包括提取域名分析、解析出IP、站点IP类别鉴别和过滤条件判定等。如果符合条件,它将再通知主控对象创建Socket对象B和下一级代理服务器建立连接,并负责和下级代理服务器进行交互。Socket对象B充当客户的角色,要求对方进行服务,并负责对服务器返回的应答头进行处理,统计出每次数据净流量和累计流量。同时Socket对象A和B之间将


  第4期凌晓峰等:自代理的应用———HTTP流量统计及IP控制软件的设计与实现6 9


  相互通信,传递两端来往数据。


  从图2可以看出,对用户端浏览器的每一个请求,都将建立起一对连接:从客户到代理的连接和从代理到服务器或下级代理的连接。它们分别由两个Socket对象负责。这样连接可以同时存在若干对,从而支持并发操作。


  33程序的结构


  软件为用户提供一个基于对话框的简单明了的界面。一个对话框对象负责全局控制,也就是上面


  所说的主控对象。程序中从,CClientSocket,,,HTTP,,,IP CHttpTask,CSetPageCSocket,4,3派生了,ChttpHead,CProxyPage,,,CLis2 tenSocket、等几个类分别用于产生几种Socket对象实例。另外定义、等几个类处理。其它如、、CIpfilerPage等处理配置信息。还有一些类用于提供一些辅助功能。程序的类关系图如图所示。


  图中箭头表示类的一种“认识”关系也就是向对方发消息在程序中对应为功能调用有单向也有双向。这种面向对象的设计方法使程序关系清晰,模块分工明确。


  34软件的使用


  由于本软件是一个用户端的代理服务器它将安装在用户计算机上。软件运行后平时将自动缩在任务栏上构成小图标状态如图所示。


  软件首次运行时将自动帮助用户改变浏览器的代理服务器选项使之指向本机。在软件的配置选项中包括了下级代理服务器的域名、端口号本身的服务端口号对各类的控制方式如允许、禁示、询问等这些都可以由用户根据需要灵活设置。在软件主界面上显示了用户每次、每日的统计流量及每月累计流量,如图5所示。同时软件还提供了历史站点记录、书签等辅助功能。


  4结语


  代理服务器技术是一项应用很广的技术,随着网络技术应用的日益普及,将会得到更广泛的应用。本文提出的自代理的概念,不仅针对HTTP,也可以用于其它应用协议,如telnet、pop3等。从本质上说,它的主要特性在于扩充了客户端的功能,而无须修改现有客户端软件,它可以在客户和服务器间架起一座透明的桥梁,可进一步用于加密鉴定、功能过滤等方面。


上一篇 下一篇