校园代理服务器的设计与实现毕业正规版文档格式.docx
- 文档编号:8266253
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:30
- 大小:962.63KB
校园代理服务器的设计与实现毕业正规版文档格式.docx
《校园代理服务器的设计与实现毕业正规版文档格式.docx》由会员分享,可在线阅读,更多相关《校园代理服务器的设计与实现毕业正规版文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
所在单位:
计算机科学与工程学院
答辩日期:
年6月19日
摘要
随着Internet在全世界的普及,越来越多的用户正在将自己的个人计算机连入网络。
然而,Internet访问范围的扩大,对网络管理者提出了更高的要求。
在决定如何对网络访问进行管理时,需要综合考虑经济投入、经费控制、网络安全以及内容管理等诸多方面的问题,而使用代理服务器软件系统是解决这一系列问题的有效途径。
代理服务器是介于浏览器和WEB之间的一台服务器,能够对浏览器请求进行各种各样的处理,起到很好的访问控制作用。
它的工作原理是,接收客户机的数据连接请求,并将请求传给Web服务器;
再从Web服务器接收返回的数据,最后把数据传给客户端显示。
本论文设计并实现了一个简单的代理服务器,采用客户机/服务器结构进行开发。
系统主要包括三个功能模块,分别为主守护进程模块、代理服务模块、缓存管理模块。
主守护进程模块主要负责代理服务器的初始化,提供监听代理服务的端口;
代理服务模块主要是负责处理客户端的请求,提供代理服务;
缓存管理模块主要是对缓存区进行管理,包括缓存区的更新策略和更新方式等。
为了方便分析和设计,系统设计中设置不同的状态量用于标识客户机、代理服务器及服务器间的联结状态。
在保证系统基本功能的同时,使用多线程机制使得代理系统有更好的延续性。
该代理系统具有简单、易用、网络化等优点,能够完成一般的HTTP访问代理服务。
关键词代理服务器;
C/S结构;
套接字;
网络编程
Abstract
AlongwiththepopularityofInternetallovertheworld,moreandmorepeopleconnecttheircomputerstothenetwork.However,withtheenlargementoftherangeofaccessinInternet,itprovedtobeachallengetothosenetworkmanagers.Whentheymakeadecisionabouthowtomanageanetwork,theyhavetothinkitovertogetherwiththepolicyofinvestment,expenditurecontrol,networksecurityandmanagementofcontentofaccessandsoon.Aproxyserversystemwouldbeaneffectiveresolutiontothisproblem.
TheproxyserverisaserverwhichsituatesbetweenbrowserandaWEBserver.Itcanrequestavarietyofprocessing,playaverygoodaccesscontrol.It’sprincipleofworkisthatitreceivestheconnectionrequestfromtheclient,andhandsdowntherequestedtotheWebserver,thenreceivesdatawhichisreturnedfromtheWebserver,finallyhandsitdownthedatatotheclient.
Thisthesisdesignsandimplementsasimpleproxyserver,usingclient/serverstructurewasdeveloped.Thesystemmainlyincludesthreemodulesrespectivelythemaindaemonmodule,servicemoduleagent,cachemanagementmodule.Mainguardprocessmoduleismainlyresponsiblefortheinitializationoftheproxyserverandportofthelisteningagentservice;
proxyservicemodulemainlyisresponsibleforhandlingtheclient'
srequest,provideserviceproxy;
cachemanagementmoduleismainlyforbuffermanagement,includingthebuffercacheupdatestrategyandupdate.Tofacilitateanalysisanddesign,thesystemsetsdifferentstatestoidentifyclient,proxyserverandtheconnectivestatesbetweenservers.Whenthesystem’sbasicfunctionareguaranteed,itusethemultithreadingtoenabletheproxyservertohaveabetterduration.Thisproxysystemhasthemeritsuchassimple,easytouse,networkandsoon,anditcancompletetheproxyofgeneralHTTPvisit.
KeywordsProxyServer;
Client/ServerStructure;
Socket;
NetworkProgramming
第1章绪论
1.1选题的背景
随着Internet的普及和不断增长,越来越多用户开始访问网络。
2021年底统计Internet的人数已经达到30亿,Internet指数级的增长导致了沉重的的网络负载和网络服务响应时间的迟缓。
随着Internet的高速发展,越来越多的企业需要通过Internet与外界进行更多的联系。
出于安全性和促进业务发展的考虑,一方面各种各样的代理服务器(APACHE、WINPROXY)应运而生,同时几乎所有的防火墙产品都融入了应用代理的功能。
大量的数据要通过代理服务器进出企业内部网,随着数据量的日益增大,代理服务器所能承受的并发连接数量和所要处理的网络吞吐量越来越大,如何设计高性能的代理服务器成为一个倍受关注的问题。
1.2课题研究意义和目的
随着Internet与Intranet的飞速发展,作为连接Internet与Intranet的桥梁,代理服务器在实际应用中发挥着及其重要的作用。
它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。
在代理服务器的众多功能中,安全性是一个突出且敏感的功能。
绝大多数企业、部门在使用代理服务器的时候,都会考虑这个问题,把它作为选购代理服务器产品的重要依据。
代理服务器是介于浏览器和Web服务器之间的一台服务器,其工作主要在OSI模型的会话层,它提供了一个有效访问Internet的途径,它的实施在校园网管理中有如下优势:
1.解决校园网中IP资源不足的矛盾
除了清华大学等少数几个学校分配到B类IP地址外,大部分学校分到的IP地址都是C类地址,在校园网的运行管理中IP资源十分紧张。
在满足学校管理、办公自动化、教师教学研究等主要要求后,根本就不可能给各院系学生机房中的每一台计算机再配一个固定的IP地址,这样做是不经济的,也是不必要的。
采用代理服务器,仅给此代理服务器一个真实的IP地址,而与此代理服务器相连的内部网计算机由代理服务器分配一个虚拟的地址块即可,这样既节约了IP地址,又可以使所有学生用机间接地与Internet相连,共享Internet资源。
2.可缓解校园网中传输速度不高的矛盾
尽管网络传输速率得到了很大的提高,但传输效率还是当前网络发展的问题之一。
一般情况下,校园网中计算机访问Internet的资源都是与该资源站点建立连接和传输数据的一个过程,当多个计算机访问相同的站点、下载相同的资料时,多个计算机就会与同一个站点进行多次连接,这样既浪费时间,占用信道,又多花通讯费用。
如果使用代理服务器,代理服务器会将访问过的资源信息保存在服务器的Cache中,内部网中客户机随后对同样资源的访问可直接从代理服务器中获取,不必建立外部连接及从内部外部传输,即加快了访问速度,又节约了上网费用。
3.可实现各院系学生机房的费用管理
使用代理服务器,对外它是一个IP地址单位,可作为一个收费用户向学校管理部门交费;
而对机房内部,它又是一个管理机构,可实现机房内部的管理,并对网络内外的通讯过程进行审计、跟踪、记录,它既可定期将这些记录日志存入文件,也可存入数据库,这些信息为实现网络的审计和计费提供了依据。
4.可实现对校园网的安全访问控制
若校园网不加防范地连入Internet,很容易受到入侵者的攻击,严重时会导致网络的瘫痪,防火墙技术正是在Internet上使用的一种安全保障措施,它可以按照用户事先规定的方案控制信息的流入和流出,监督和控制使用者的操作。
目前防火墙的实现技术主要有两种,即基于路由器的包过滤技术和基于代理服务器控制技术。
如果采用代理服务器,只是代理服务器直接与Internet相连,而内部网的机器不直接与Internet相连,客户机的内部资源不会受到侵犯,同时,又可以在代理服务器上控制内部网客户机对Internet资源和服务的访问。
如限制某种用户使用某种Internet服务,限制某种用户访问某些Internet站点,比如说,允许某些用户访问国外站点,允许某些用户仅访问国内免费网站,允许某些用户只能访问校园网内资源等[1]。
第2章系统开发工具及开发平台
2.1开发语言
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动和互联网,同时拥有全球最大的开发者专业社群。
Java作为一种高级的程序语言,具有众多的优点。
Java特性主要有以下几点内容。
(1)简单。
Java语法是C++语法的一个“纯净”和“升华”的版本。
Java舍去了C++中很少使用、难于理解、易混淆的内容提供了大量的类库,使得编程更易学,让更多计算机爱好者加入到了程序员的队伍中。
同时其保留了C++的精华,使原来的C++程序员能够顺利地转入到Java的使用中来。
(2)可移植性。
Java引以为傲的“一次编译,到处运行”,可以方便地将Java部署到任何不同平台的计算机上。
(3)面向对象。
Java是纯面向对象的编程语言,程序员可以用面向对象的思想来进行程序的编写与设计,能够创建或使用可重用的组件,使得程序更容易编写和维护。
(4)分布式。
Java在网络方面的强大是其它任何语言无法比拟的,可以通过其提供的类库方便地处理各种网络协议,把打开套接字连接等烦琐的网络任务变得非常容易。
(5)健壮性。
Java编译器会检查出很多其它语言在运行时才显示出来的错误。
Java采用的指针模型可以消除重写内存和数据崩溃的可能。
(6)多线程。
多线程编译的简单性是Java成为流行的服务器端开发语言的主要原因之一。
(7)安全。
Java是目前最安全的语言之一。
目前极少的语言本身具有安全性的开发平台,用Java可以构建防病毒和防篡改的系统。
(8)动态。
Java可随意增加新的方法以及实例变量,而客户端却不需要做任何的改动。
动态的特性也是Java在互联网中兴盛不衰的法宝。
(9)体系结构中立。
字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行。
Java是在字节码的层次上跨平台,而C++只是在源码的层次上跨平台[2]。
2.2开发平台
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;
例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
Eclipse项目IBM发起,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开放源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成--EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
2.2.2C/S结构
C/S又称Client/Server或客户/服务器模式,是为人所熟知的软件系统体系结构。
服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。
客户端需要安装专用的客户端软件。
C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
对应的优点就是客户端响应速度快。
客户/服务器模式工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供或被接受,这一套惯例包含了一套协议,它必须在通信的两头都被实现。
根据不同的实际情况,协议可能是对称的也可能是非对称的。
在对称的协议中,每一方都有可能扮演主从角色;
在非对称协议中,一方是不可被改变的主机,而另一方则是从机。
一个对称协议的例子是Internet中用于终端仿真的Telnet,而非对称协议的典型例子是HTTP协议。
无论协议是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。
2.3网络编程技术
代理服务技术是一台PC机上安装一套代理软件,主要用于用户对Internet资源的访问,是典型的网络应用软件,要在Windows平台上开发这样的软件,必须对Windows网络编程的模式进行深入的研究和理解。
Winsock是Windows的网络编程接口,是Windows网络编程事实上的标准。
应用程序通过调用Winsock的API实现相互之间的通信,而Winsock利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。
套接字(Sockets)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
可以将套接字看做不同主机间的进程进行双向通信的端点,它构成了在单个主机内及整个网络间的编程界面。
套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。
套接字通常和同一个域中的套接字交换数据(数据交换可可能穿越域的界限,但这时一定要执行某种解释程序)。
Windows规范支持单一的通信域,即Internet域。
各种进程使用这个域,互相之间用Internet协议簇进行通信。
套接字可以根据通信性质分类,这种性质对于用户是可见的。
应用程序一般仅在同一类的套接字间通信。
套接字有两种不同的类型,流套接字和数据报套接字:
1.流套接字
流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务,它适用于处理大量数据。
网络传输层可以将数据分散或集中到合适尺寸的数据包中。
2.数据报套接字
数据报套接字支持双向的数据流,但并不保证数据传输的可靠性、有序性和无重复性。
也就是说,一个数据报套接字接收信息的进程有可能发现信息重复,或者和发出时的顺序不同的情况。
2.4运行环境
软件运行平台:
本系统设计运行在Windows2007操作系统环境下。
硬件运行平台:
CPU:
P100或以上。
内存:
16M或以上。
显卡:
普通VGA显卡。
显示器:
普通彩色显示器。
键盘:
普通标准键盘。
鼠标:
标准鼠标。
网络环境:
由于系统为C/S模式,所以要求在网络环境下运行,结合本系统的网络数据流量不大,10Mbps的网络就足够了。
当前的网络协议都能够满足这个要求,所以对网络环境没有特殊的要求。
第3章代理服务器的理论基础
3.1主要功能
ProxyServer(代理服务器)是Internet链路级网关所提供的一种重要安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。
主要的功能有:
1.连接Internet与Intranet充当防火墙:
因为所有内部网的用户通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网;
同时可以设置IP地址过滤,限制内部网对外部网的访问权限;
另外,两个没有互联的内部网,也可以通过第三方的代理服务器进行互联来交换信息。
2.节省IP开销:
由于所有用户对外只占用一个IP,所以不必租用过多的IP地址,降低网络的维护成本。
这样,局域网内没有与外网相连的众多机器就可以通过内网的一台带路服务器连接到外网,大大减少费用。
当然也有它不利的一面,如许多网络黑客通过这种方法隐藏自己的真实IP地址,而逃过监视。
3.提高访问速度:
本身带宽较小,通过带宽较大的Proxy与目标连接。
而且通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,从而达到提高访问速度的目的。
4.防止攻击:
隐藏本机的真实地址信息,还可以隐藏本机的IP,防止被黑客攻击。
通过分析指定IP地址,可以查询到网络用户的目前所在地。
例如,大家在一些论坛上看到,论坛中明确标出了发帖用户目前所在地,这就是根据论坛会员登录时的IP地址解析的。
还有平时最为常用的显IP版QQ,在“发送消息”窗口中,可以查看对方的IP及解析出的地理位置。
而当使用相应协议的代理服务器后,就可以达到隐藏当前所在地地址的目的了。
5.突破IP访问限制:
使用它可以访问一些有IP禁止访问的服务器,因为封锁只禁止了主机和目标服务器的连接,但并没有禁止主机与代理服务器的连接以及代理服务器与目标服务器的连接。
代理服务器有许多种,大体来说有HTTP,FTP,SOCKET代理三种,其中由分透明和不透明代理。
其中透明代理一般是网关,是硬件,所以不讨论透明代理。
当机器通过代理服务器上网时,通讯是分两次的,先是机器和代理服务器通讯,再是代理服务器和目的地址通讯。
机器和代理服务器通讯时,目的IP是代理服务器的IP。
代理服务器和目的地址通讯时,源IP是代理服务器的IP,当然外部的数据也是一样的。
在内网中,出现的IP数据,全是内网和代理服务器的IP。
因此,从IP包头是看不出任何与外面通讯的信息的,只有从数据中才能看到。
3.2主要作用
代理服务器是一种网络实体,又称为万维网高速缓存,代理服务器把最近的一些请求和响应暂存在本地磁盘中。
当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。
代理服务器可在客户端或服务器端工作,也可在中间系统工作。
图3-1(a)是校园网不使用代理服务器的情况。
这时,校园网中所有的PC都通过专线链路(R1-R2)与因特网上的源点服务器建立TCP连接。
因而校园网各PC访问因特网的通信量往往会使这条链路过载,使得时延大大增加。
图3-1(a)不使用代理服务器
图3-1(b)使用代理服务器
图3-1(b)是校园网使用代理服务器的情况,此时访问因特网的过程如下:
1.校园网PC中的浏览器向因特网的服务器请求服务时,就先和校园网的代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文。
2.若代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入HTTP响应报文中返回给PC的浏览器。
3.否则,代理服务器就代表发出请求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 代理服务器 设计 实现 毕业 正规
![提示](https://static.bingdoc.com/images/bang_tan.gif)