代理服务器(Proxy)原理-程序员宅基地

技术标签: php  c/c++  

17.1 什么是代理服务器(Proxy)

 
以类似代理人的身份去取得用户所需要的数据就是了! 但是由于它的『代理』能力,使得我们可以透过代理服务器来达成防火墙功能与用户浏览数据的分析!
 
此外,也可以藉由代理服务器来达成节省带宽的目的,以及加快内部网络对因特网的 WWW 访问速度
 
 
17.1.1 什么是代理服务器
 
我们或许会帮忙家人去办理一些杂务吧!举个例子来说,例如缴费或者是申办提款卡等等的, 由于你并不是『申请者本人』而是『代理人』的角色,
因此有时候会需要拿出一些证件
 
代理服务器(Proxy Server)与上面真实世界一样,当客户端有因特网的数据要求时, Proxy 会帮用户去向目的地取得用户所需要的数据。
 
所以,当客户端指定 WWW 的代理服务器之后,用户的所有 WWW 相关要求就会通过代理服务器去捉取。
 

 

 
 
代理服务器会架设在整个区网的单点对外防火墙上头,而在区网内部的计算机就都是透过 Proxy 来向因特网要求数据的,这就是所谓的『代理服务器』!
 
当然,上面的架构仅只是一个案例,但是这个架构比较多人用的原因, 是因为这样的Proxy server 还可以兼做高阶防火墙之用。
 
客户端向外部要求的数据事实上都是 Proxy 帮用户取得的,因此因特网上面看到要求数据者,将会是 Proxy 服务器的 IP 而不是客户端的 IP
 
Proxy server 因为直接对外网,相当于当了个炮灰,外网只能找到这个代理服务器,隐藏内网的机器,从而 起到防火墙的作用。
 
 
17.1.2 代理服务器的运作流程
 

 

cache的存在,可以做假象的web加速;
 
当Proxy的快取拥有用户所想要的数据时:
  • a.  Client 端向 Server 端发送一个数据需求封包;
  • b.  Server 端接收之后,先比对这个封包的『来源』与预计要前往的『目标』网站是否为可接受? 如果来源与目标都是合法的,或者说,来源与目标网站我们的 Proxy 都能帮忙取得资料时,那么 Server 端会开始替 Client 取得资料。这个步骤中比较重要的就是『比对政策』啦,有点像是认证的感觉啦;
  • c.  Server 首先会检查自己快取 (新的数据可能在内存中,较旧的数据则放置在硬盘上) 数据, 如果有 Client 所需的数据,那就将数据准备取出,而不经过向 Internet 要求数据的程序;
  • 最后当然就是将数据回传给 Client 端!
 
当Proxy的快取没有用户所想要的数据时:
1. Client 端向 Server 端发送一个数据需求封包;
2. Server 端接收之后,开始进行政策比对;
3. Server 发现快取并没有 Client 所需要的资料,准备前往因特网抓取数据;
4. Server 开始向 Internet 发送要求与取得相关资料;
5. 最后当然就是将数据回传给 Client 端啰!
 
注意:
Proxy 对于 cache 的速度是很要求的,而这个 cache 就是硬盘啦! 当然,硬盘容量必需要足够大,而且还要『足够快』才行!
因为由 上面的流程当中,我们不难发现, cache 是一直被重复存取的一个 地方!所以硬盘的好坏就差别很大啦!
可以说他是影响一个 Proxy 效能好坏的关键
 
17.1.3 上层代理服务器
 
即,我的Proxy 代理服务器的Proxy 代理服务器。

 

由于可做为我们的上层代理服务器的主机通常是具有较高带宽的, 因此我们透过它去要求数据当然『理论上』速度会更快!而上层代理服务器最大的好处其实是在于『分流』喔
 
分流的效果示意图:
 

 

由于代理服务器需要管控信任的来源端客户端计算机,因此各 ISP 仅能针对自家的用户来开放 Proxy 使用权而已。
 
17.1.4 代理服务器与NAT服务器的差异
 
在内部局域网络使用私有 IP 的客户端,不论透过 Proxy 或者 NAT 均可以直接取得 WWW 的服务,那么 NAT 与 Proxy 有没有什么不同的地方啊。
 
  • NAT 服务器的功能:就如同第九章提到的数据, Linux 的 NAT 功能主要透过封包过滤的方式, 并使用 iptables 的 nat 表格进行 IP 伪装 (SNAT) ,让客户端自行前往因特网上的任何地方的一种方式。主要的运作行为是在 OSI 七层协议的二、三、四层。由于是透过封包过滤与伪装,因此客户端可以使用的端口口号码 (第四层) 较弹性;
  • Proxy 服务器的功能:主要透过 Proxy 的服务程序 (daemon) 提供网络代理的任务,因此 Proxy 能不能进行某些工作,与该服务的程序功能有关。 举例来说,如果你的 Proxy 并没有提供邮件或 FTP 代理,那么你的客户端就是无法透过 Proxy 去取得这些网络资源。 主要运作的行为在 OSI 七层协议的应用层部分(所谓的比较“高阶”之意)
 
 
NAT 服务器是由较底层的网络去进行分析的工作,至于通过 NAT 的封包是干嘛用的, NAT 不去管他!
 
至于 proxy 则主要是由一个daemon 的功能达成的,所以必需要符合该 daemon 的需求,才能达到某些功能。
 
17.1.5  架设代理服务器的用途与优缺点
 
代理服务器的功能主要有:
  • 作为 WWW 的网页资料取得代理人:这是最主要的功能。
  • 作为内部区网的单点对外防火墙系统:
    • 如果你的Proxy 是放在内部区网的 Gateway 上头,那么这部代理服务器就能够作为内部计算机的防火墙
由于 Proxy 的这种特性,让他很常被使用于大型的企业内部,因为可以达到杜绝内部人员上班时使用非 WWW 以外的网络服务,而且还可以监测用户的资料要求流向与流量。
 
主要优点:
  • 节省单点对外的网络带宽,降低网络负载
    • 当你的 Proxy 用户很多时,那么 Proxy 内部的快取数据将会累积较多。因此客户端想要取得网络上的数据时,很多将会从 Proxy 的快取中取得,而不用向因特网要求资料。 所以可以节省带宽啊!
  • 以较短的路径取得网络数据,有网络加速的感觉:
    • 例如你可以指定你的 ISP提供的代理服务器连接到国外,由于 ISP 提供的 Proxy 通常具有较大的对外带宽,因此在对国外网站的数据取得上, 通常会比你自己的主机联机到国外要快的多。此外,与上一点的快取数据也有关系啊!从内部硬盘取得的路径总比对外的因特网要短的多啊!
  • 透过上层代理服务器的辅助,达到自动数据分流的效果:
    • 例如图 17.1-4 所示,让客户端在不知不觉之间,就可以得到数据由不同 Proxy 取得的加速效果!
  • 提供防火墙内部的计算机连上 Internet:就是上面提到的单点对外防火墙功能
 
需要连上国外的网页,请一定使用 ISP 提供给你的代理服务器来帮忙,因为不但可以节省带宽,并且速度上会快上很多很多 (例如美国环保署, EPA 网站)。
 
主要缺点:
  • 容易被内部区网的人员滥用:
    • 我们知道因特网上看到取得数据的人是 Proxy那部主机而不是客户端计算机的 IP,因此可能会让某些内部网络使用人员开始利用你的 proxy 干坏事,此时你就会很麻烦~ 所以,为了杜绝这个状况,强烈的建议多加登录档案分析的软件,在管理上面会轻松很多!
  • 需要较高超的设定技巧与除错程序:
    • 在设定服务器当中, Proxy 算是比较不容易设定好『效能』的一个服务器了!由于 Proxy 的 Cache 与他的『上层代理服务器』的关系是很紧密的, 万一设定错误的话,很有可能反而让你的Proxy 拖垮客户端 WWW 的浏览速度!最严重的是造成无法联机!
  • 可能会取得旧的错误数据:
    • 这个最容易发生了!由于曾经浏览过的网页会被放置到快取, 并提供后续用户的直接取得。 万一因特网上面的那个网页数据更新过呢?那时你会发现,怎么客户端无法看到更新后的资料? 就是因为快取的问题。
 
一般架设需求:
  • 我的 Client 端用户不少,而且大部分仅需要 WWW 这个网络服务而已;
  • 我的 Proxy 还兼做防火墙的任务;
  • 我的 Client 端常常需要联机到传输速度很慢的网站,例如国外的网站;
  • 我的 Client 端常常浏览的网站是『静态』网站,而不是动态网站 (例如讨论区的 PHP)。
 

转载于:https://www.cnblogs.com/Aiapple/p/5955882.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/arland19521101/article/details/102334737

智能推荐

【集成学习-组队学习】3.优化基础模型_模型选择 逐步法-程序员宅基地

文章浏览阅读216次。优化基础模型在回归问题的基本算法中,我们使用数据集去估计模型的参数,如线性回归模型中的参数w,那么这个数据集我们称为训练数据集,简称训练集。我们在回归问题中使用训练集估计模型的参数的原则一般都是使得我们的损失函数在训练集达到最小值,其实在实际问题中我们是可以让损失函数在训练集最小化为0,如:在线性回归中,我加入非常多的高次项,使得我们模型在训练集的每一个数据点都恰好位于曲线上,那这时候模型在训练集的损失值也就是误差为0。那么这样我们的模型是否就可以预测任意情况呢?答案是显然否定的。我们建立机器学习_模型选择 逐步法

程序设计分组训练 实验2实验报告_程序分组训练实验二-程序员宅基地

文章浏览阅读81次。程序设计分组训练 实验2_程序分组训练实验二

图书信息管理系统C++_{if(!strcmp(name,book[i].name))-程序员宅基地

文章浏览阅读2k次,点赞4次,收藏45次。实验要求:实验代码;#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <fstream>#include <iomanip>#include <ctype.h>using namespace std;//图书结构体struct Book { double price; ._{if(!strcmp(name,book[i].name))

vue-cli不同版本对比(vue-cli2/cli3/cli4)_vuecli4版本哪个好-程序员宅基地

文章浏览阅读2.1k次,点赞7次,收藏11次。版本/操作vue-cli2vue-cli3/cli4vue-cli下载安装 npm install vue-cli -g npm install -g vue@cli创建新项目vue init webpack 2.0projectvue create 3.0project启动项目npm run devnpm ru..._vuecli4版本哪个好

linux内核添加usb键盘驱动,配置USB外设 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...-程序员宅基地

文章浏览阅读902次。linux-2.6.32在mini2440开发板上移植配置USB外设[日期:2013-04-08]来源:Linux社区作者:ssdsafsdsd[字体:大 中 小]编者:因为LINUX内核对S3C2440的Host驱动的已经支持,而且支持的外设相当的丰富,所以这一部分只是进行配置就可以使用。因为配置的东西较多,没有给出详细的截图,看手册上介绍的就很明白。需要手册的请留下邮箱索取。1 配置和测试US..._linux内核识别鼠标需要开启什么配置

hadoop在eclipse上运行实例_hadoop eclipse run as-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏18次。上一篇博客阐述了怎么创建hadoop与eclipse的连接(因为是在GUI版上装的linux版eclipse),所以这一篇不仅介绍怎么做,而且还讲解怎么创建windows上eclipse与linux上的hadoop的连接。(11条消息) Centos7(GUI)下的hadoop与eclipse的连接并运行wordcount实例_qq_45672631的博客-程序员宅基地这里,在hadoop已经成功的前提下,我们在官网下载eclipse (这里用的是2021-06版的)java-jdk(这里用的11._hadoop eclipse run as

随便推点

关于使用LTC6811/LTC6804断线自检的一些心得-程序员宅基地

文章浏览阅读649次,点赞11次,收藏17次。说起来惭愧,这个问题最初是还是客户先发现的,当时做的是一款用在两厢纯电动(品牌这里就不说了)上面的一体机,总压40串,使用了4片LTC6811-2。前期在家里做断线测试都是“静态”的,没考虑到“动态”的情况,而且当时的关注点都在检测的速度上,客户要求断线告警上报时间不能超过6S。当然为了确保系统正常工作,必须要有一定的自检功能,楼主使用了“命令组”自检、被动均衡自检和断线自检,其中在使用断线自检遇到一个问题,现在将这个问题和大家分享下,共同学习。_ltc6811

android 收藏歌曲功能,基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)...-程序员宅基地

文章浏览阅读978次。作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩固下,也当作是练练手。感兴趣的朋友可以看看,有设计不足的地方也欢迎指出。开发之前首先介绍下该音乐播放器将要开发的功能(需求):1.本地音乐的加载和播放;2.网络音乐的搜索,试听和下载;3.音乐的断点下..._android收藏本地音乐 原创

项目:电子词典_aggressor bump-程序员宅基地

文章浏览阅读2.6w次。项目:电子词典_aggressor bump

GameFramework教程五、界面,即UI_gameframework splash-程序员宅基地

文章浏览阅读3.3k次。界面,即UI_gameframework splash

三个整数的排序_将输入的三个数放到数组中并排序-程序员宅基地

文章浏览阅读4.1k次。1. 问题描述:问题描述  输入三个数,比较其大小,并从大到小输出输入格式  一行三个整数输出格式  一行三个整数,从大到小排序样例输入33 88 77样例输出88 77 332. 方法一:可以使用Java的三目运算符进行判断得到最大值然后判断剩下来的元素的大小关系,方法二新建一个整型数组把元素存进去然后对数组进行排序然后再逆序输出即可..._将输入的三个数放到数组中并排序

剑指 Offer 14- I. 剪绳子(C++暴力+动态规划、贪心解)_c++剪绳子动态规划法-程序员宅基地

文章浏览阅读627次。一、题目剑指 Offer 14- I. 剪绳子题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解释: _c++剪绳子动态规划法

推荐文章

热门文章

相关标签