代理服务器——Internet的信息中转站 电子科技大学8010研究室 邱云杰硕士 杨峥博士 2000年 第15期 #1  什么是代理服务器?   代理服务器(Proxy Server)就是私有网络和公有网络之间的联系人,它负责转发合法的网络信息,并对转发进行控制和登记。在使用网络浏览器浏览网络信息的时候,如果使用代理服务器,浏览器就不是直接到Web服务器去取回网页,而是向代理服务器发出请求,由代理服务器取回浏览器所需要的信息。 #1  如果你是服务提供商:   ● 大部分代理服务器都具有缓冲的功能。它有一个很大的Cache(一个很大的硬盘缓冲区),不断地将新取得的数据保存在Cache中。如果浏览器所请求的数据在其缓冲区中已经存在而且是最新的,那么它就不会重新到Web服务器取数据,而直接将缓冲区中的数据传送给浏览器,从而显著地提高浏览速度;   ● 代理服务器能够提供安全功能。它连接Internet与Intranet,有防火墙功能。由于内部网与外部网之间没有其它的直接连接,所有的通信都必须通过代理服务器,因此外界不能直接访问到内部网,使得内部网的安全性得到提高。同时也可以设置IP地址过滤,来限制内部网对外部的访问权限。   ● 可以节省IP开销。由于所有用户对外只占用一个有效的IP,所以不必租用过多的有效IP地址,降低网络的维护成本。由于目的服务器只能查出所使用的代理服务器的IP,所以对防止网络黑客还有一个不言而喻的好处,那就是通过这种方法隐藏自己的真实IP地址。 #1  如果你是网虫:   代理服务器的最大的好处是可以通过代理来访问本身不能访问到的地方。例如169的GUEST用户。他们使用公用的账号上网,只能访问当地信息港。有了代理服务器,就可以任意出国!电子信箱、主页空间、ICQ、FTP、各种信息资源……统统敞开着。不过,如果你有自己的账户则不再需要代理服务器了,你可以自由出国。当然,如果你想隐藏自己的真实IP地址,也可使用代理服务器。 #1  代理服务器怎样工作?   实现代理服务器有三种方式:一是在应用层实现,相当于应用网关,如web代理服务器和Socks代理服务器;二是在IP层或更低层实现,通过对数据包的转发来完成代理功能;三是通过更改系统调用的方式实现,如微软的Winsock代理服务器,在自己的计算机上安装代理程序,程序将自动地修改系统调用。由于Web代理服务器是目前使用得最普遍的代理服务器,因此下面主要针对Web代理服务器来说明代理服务器的实现原理。   Web 代理服务器一般由过滤器和应用程序两部分组成。过滤器判断收到的HTTP请求是代理格式还是标准格式,如果是标准格式,则交由本地WWW服务器处理;如果是代理格式,则交由代理应用程序处理。代理应用程序首先在代理缓存区内查找,如果数据存在且有效,则从缓存区中取出数据;如果不存在,则连接至远程目标服务器,并获得数据。不论代理服务器从缓存区中还是从Internet远程服务器中获取数据,它都按照HTTP协议使用80号端口将信息返回给请求者。 #1  超文本传输协议(HTTP)代理怎么工作?   HTTP协议用于浏览器与服务器间通信,由欧洲核能研究所(CERN)提出。其实现方式如下:HTTP代理服务器在TCP协议的1080(可设定)端口上等待客户连接的到来,当用户的浏览器试图连接真实WWW服务器时,将首先与HTTP代理服务器连接,并通知用户身份的认证方式(如果无安全控制则无这步),然后继续将请求发往HTTP代理服务器。HTTP代理服务器在收到连接时将创建一个新的线程(小服务者)以处理此连接,并在新线程中进行用户身份认证(如果需要),然后接受客户的请求。如果请求的数据在缓冲区中,则将数据用HTTP协议发到客户进程,否则还需连接至相应的WWW服务器以获得所需数据。在代理服务器获得所需数据后,就将此数据发回客户进程,与此同时,还将其登记并存入服务器的缓冲区,以备下次使用。缓冲区内的数据通常按一定的算法清除,一般按保存的时间长短处理。 #1  文件传输协议(FTP)代理怎么工作?   由于文件传输(FTP)数据连接的复杂性,使得FTP代理服务器的实现较为复杂。较简单的一种方法是采用“用户名@主机 (User@Host)”方式来确定用户要连接的FTP服务器,具体代理过程如下:   (1)FTP代理服务器首先依照TCP协议在21号端口上等待客户连接请求的到来;   (2)FTP客户软件连接到代理服务器;   (3)FTP代理服务器生成一个新线程来处理此连接;   (4)代理子线程将已有的连接作为控制连接,要求客户方提供User@Host结构的命令作为连接请求;   (5)代理服务器收到此请求后从中取出用户要连接的主机名或地址(Host),按此地址连接FTP服务器,然后等待FTP服务器方来的连接响应;   (6)代理服务器连接上FTP服务器后则向FTP服务器发送从客户方传来的用户名(User);   (7)此后进入转发过程。   以上是代理服务的流程,它得到了诸如CuteFtp等软件的支持,HTTP协议的代理也支持FTP代理操作。 #1  Telent协议代理怎么搞?   Telent的代理服务还未有一个明确的标准,它通常采用如下方式为用户提供服务:   (1)在用户连接到代理服务器上时,代理服务器向客户终端机输出提示,要求用户输入要连接的服务器的地址或名字;   (2)用户在提示指引下输入要连接的Telnet服务器的名字或地址;   (3)代理服务器收到用户的输入,并处理此输入数据以取得用户试图连接的Telnet服务器实际的IP 地址;   (4)代理服务器按此地址连接相应的Telnet服务器;   (5)在连接上Telnet服务器之后则只须在其间转发数据。   通常的Telnet程序都支持这种方式,如Windows 95的Telnet程序和Linux下的Telnet。 #1  电子邮件协议代理怎么工作?   电子邮件协议包括简单邮件传输协议(SMTP, Simple Mail Transfer Protocol)和邮局协议(POP, Post Office Protocol)。   SMTP协议代理采用由用户指定服务器的方式。管理员在设定中指定用户的SMTP邮件服务器,如果不指定则使用缺省的邮件服务器。当客户要连接邮件服务器时,它指定的邮件服务器名应是代理服务器的名字,用户名是指登录代理服务器所需的用户名。代理服务器接收此连接后,为此连接创建一个新的线程,然后连接相应设定的SMTP服务器,获得邮件并转发给客户。   POP3协议代理的实现与SMTP协议的实现原理类似,也采用用户指定服务器的方式,用户只与指定的邮件服务器交互。管理员在用户设置中指定用户使用的POP3服务器的地址,POP3客户首先连接到代理服务器并提供自己的身份ID和口令,代理服务器按用户名找到相应的POP3服务器的地址和账号,与POP3服务器连接并获得邮件,然后将邮件转发给用户。   目前,Netscape、MS Mail、Pegasus mail、Eudora等Email软件都支持以上两种Mail协议的代理方式。 #1  什么是Socks V5协议?   Socks V5不仅支持基于TCP连接的应用协议的代理,而且支持基于UDP传输的应用协议代理。它提供了一个标准的安全验证方式和对请求响应的方式。   对基于TCP的客户而言,当TCP客户要建立一个连接时,它首先向Socks Server的指定端口(1080)建立连接,然后进入验证方式进行协商和验证。此后再发送备用请求,Socks Server评估此请求,并建立一个相应的连接(或拒绝客户请求)。   对基于UDP的客户来说,一般都是在建立TCP的主连接后再发送UDP报文,此时,客户将报文发往由响应中指出的备用UDP Server的端口和地址。 #1  有哪些代理服务器产品?   目前Internet上最常使用的代理服务器产品多为软件形式,如国内的中网代理服务器系统和曙光信息产业公司推出的“天联”Web 服务器/Proxy服务器,国外的Apache、Netscape Proxy Server、Microsoft Proxy、Sock5服务器等。这些产品都包括了以下功能:收集缓存Web页面、防止黑客侵入网络、允许IPX节点访问IP功能、允许按IP地址过滤访问、允许共享一个IP地址、URL过滤、病毒过滤和Socks客户机等。对用软件实现的代理服务器而言,其优点是配置灵活、安全控制性好,且比较便宜,因此得到了广泛的应用。但这类产品的数据转发速率都很低,最快也不过几Mbps,这样就体现不了高速接入的优点。   除软件形式的产品外,还有如Fore系统公司推出的“防火墙交换代理(FSA)”等硬件解决方案。Fore的防火墙交换代理最独特之处就是它首次突破了传统防火墙的设计思想,将防火墙软件与网络交换硬件结合起来,使防火墙的数据吞吐速率达到20Gbps,从而彻底解决了因为防火墙的过滤使整个网络的传输速率降低的问题。Fore将代理技术融入到产品ESX2400/4800系列千兆以太网交换机和ESX3000多功能园区网交换机上,代理软件采用Fore公司的专用集成电路(ASIC)硬化,从而提高了数据的转发速度,但安全性能也因此而相对减弱。