代理服务器(Proxy)的原理

时间:2024-02-26 10:23:36
什么是代理服务器(Proxy)?

以类似代理人的身份去取的用户需要的数据。由于它的【代理】能力,使得我们可以透过代理服务器来达成防火墙与用户数据的分析。除此之外我们还可以借助代理服务器来达成节省带宽的目的,以及加快内部网络对因特网的万维网的访问速度。
当客户端有因特网的数据要求时,Proxy会帮用户去向目的地取得用户所需要的数据。所以当客户端指定www的代理服务器之后,用户的所有www相关要求就会通过代理服务器去捉取。
这里写图片描述
代理服务器会架设在整个区网的单点对外防火墙上头,而在区网内部的计算机都是通过Proxy来向英特网要求数据的,这就是所谓的【代理服务器】
上面的架构仅仅是其中一个案例,架构的采用率比较高,因为这样的Proxy server不仅可以充当代理服务器的角色,还可以当做高阶防火墙。
客户端向外部要求的数据事实上都是Proxy帮用户取得的,因此因特网上面看到要求数据者,将会是Proxy服务器的IP而不是客户端的IP。Proxy Server因为直接对外网,相当于当了个炮灰,外网只能找到这个代理服务器,隐藏内网的机器,从而起到防火墙的作用。

代理服务器的运作流程

这里写图片描述

cache的存在,可以做假象的web加速;
当Proxy的快取拥有用户所想要的数据时:
a.Client端向Server端发送一个数据需求封包
b.Server端接收之后,先比对这个封包的【来源】与预计要前往的【目标】网站是否为可接受?如果来源和目标都是合法的,或者说,来源与目标网站我们的Proxy都能帮忙取得资料时,那么Server端会开始替Client取得资料。取得资料中比较重要的政策就是【比对政策】,有点像认证的感觉。
c.对比政策,Server对先检查自己的快取(新的数据可能在内存中,比较旧的数据放在硬盘中)数据,如果有Client所需要的数据,那么将数据准备取出,而不经过向Internet要求数据的程序。
d.最后当然就是将数据回传给Client
Proxy对于cache的速度是很有要求的,而这个cache就是硬盘了。硬盘的容量必须足够大,而且还要【足够快】才行!cache是一直被重复存取的地方。所以硬盘的好坏就差别打了。

上层代理服务器

我们的Proxy代理服务器的Proxy代理服务器就是上层代理服务器。上图:
这里写图片描述
作为上层代理服务器的主机通常具有较高的带宽,因此我们透过它去要求数据【理论上】速度会更快,而上层代理服务器最大的优点是可以分流。
分流示意图:这里写图片描述
由于代理服务器需要管控信任的来源客户端计算机,因此各ISP仅能针对自家用户开发Proxy使用权。

代理服务器和NAT服务器的差别

【百度百科概念】NAT:当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

NAT功能:
NAT不仅能解决IP不足的问题,而且还能够有效的避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
1.宽带分享:这是NAT主机的最大功能
2.安全防护:NAT之内对的PC联机到Internet上面时,他所显示的IP是NAT主机的公共IP,所以Client端的PC当然就具有一定程度的安全了,外界在进行porscan(端口扫描)的时候,就侦测不到源Client端的PC。

简要的介绍了NAT,看一看代理服务器和NAT的差别:

在内部局域网使用私有的IP客户端,不论透过Proxy或者NAT均可以直接取得www的服务,那么NAT与Proxy有没有什么不同的地方。
1.NAT服务器的功能:Linux的NAT功能主要透过封包过滤的方式,并使用iptables的nat表格进行IP伪装(SNAT),让客户端自行前往因特网的任何一个地方。主要的运作行为是在OSI七层协议的二,三,四层。由于是透过封包过滤与伪装,因此客户端可以使用端口号码(第四层)较弹性。
2.Proxy服务器的功能:主要透过Proxy的服务器程序(daemon)提供网络代理的任务,因此Proxy能不能进行某些工作,与该服务的程序有关。举例说明:如果你的Proxy并没有提供邮件或FTP代理,那么你的客户端就无法透过Proxy去取得这些网络资源。主要运作的行为在OSI七层协议的应用层部分(这就是所谓的高阶的意思)

NAT服务器是由叫底层的网络去进行分析工作,至于通过NAT的封包是干嘛用的,NAT不去管它。
Proxy则主要是由一个服务器程序的功能达成的,所以必须符合该程序的需求才能达到某些功能。

架设代理服务器的用途与优缺点

代理服务器的主要功能是:
1.作为www的网页资料的取得的代理人(最为主要的功能)
2.作为内部区网的单点对外防火墙系统(如果你的Proxy是放在内部区网的Gateway上头,那么这部代理服务器就能够作为内部计算机的防火墙)
由于Proxy的这种特性,让他很常被使用于大型企业的内部,因为可以达到杜绝内部人员上班时使用非WWW以外的网络服务器,而且还可以监测用户的资料要求流向与流量。

主要优点:

1.节省单点对外的网路带宽,降低网络负载
当你的Proxy用户很多时,那么Proxy内部的快取数据将会积累的非常多。因此客户端想要取得网络上的数据时,很多将会从Proxy的快取中取得,而不用向因特网去请求资料,可以节省带宽。
2.以较短的路径取得网络数据,有网络加速的感觉:
例如你可以指定你的ISP提供的代理服务器连接到国外,由于ISP提供的Proxy通常有较大的对外带宽,因此在国外网站的数据取得上,通常比你自己的主机联机到国外要快的多此外,与上一点的快取数据也有很大关系。从内部硬盘取得的路径总比对外的因特网要短的多。
3.透过上层代理服务器的辅助,达到自动数据分流的效果
4.提供防火墙内部的计算机连上Internet:即上文提到单点对外防火墙功能

需要连上国外的网页,请一定要使用ISP提供给你的代理服务器帮忙,不但可以节省带宽,并且速度上可以快很多

主要缺点:

1.容易被内部区网的人员滥用:
因特网看到取数据的人是Proxy而不是客户端计算机的IP,因此可能会让某些内部网路使用人员开始利用你的proxy干坏事,此时你就会很麻烦,为了杜绝这种情况,建议增加登录档案分析的软件。用于管理。
2.需要较高的设定技巧与除错程序
在设定服务器当中, Proxy 算是比较不容易设定好『效能』的一个服务器了!由于 Proxy 的 Cache 与他的『上层代理服务器』的关系是很紧密的, 万一设定错误的话,很有可能反而让你的Proxy 拖垮客户端 WWW 的浏览速度!最严重的是造成无法联机!
可能会取得旧的错误数据:
这个最容易发生了!由于曾经浏览过的网页会被放置到快取, 并提供后续用户的直接取得。 万一因特网上面的那个网页数据更新过呢?那时你会发现,怎么客户端无法看到更新后的资料? 就是因为快取的问题。