正向代理,反向代理和透明代理的原理和区别!

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://z00w00.blog.51cto.com/515114/1031287
套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术。

一、正向代理(Forward Proxy)

一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。如下图1.1
(图1.1)
从上面的概念中,我们看出,文中所谓的 正向代理就是 代理服务器替代访问方【用户A】去访问目标服务器【服务器B】
这就是正向代理的意义所在。而为什么要用代理服务器去代替访问方【用户A】去访问服务器B呢?这就要从代理服务器使用的意义说起。
使用正向代理服务器作用主要有以下几点:

1、访问本无法访问的服务器B,如下图1.2

(图1.2)

我们抛除复杂的网络路由情节来看图1.2,假设图中路由器从左到右命名为R1,R2

假设最初用户A要访问服务器B需要经过R1和R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。但是如果用户A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1或R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。

现实中的例子就是“翻墙”。不过自从VPN技术被广泛应用外,“翻墙”不但使用了传统的正向代理技术,有的还使用了VPN技术。

2、加速访问服务器B

这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如图1.2
假设用户A到服务器B,经过R1路由器和R2路由器,而R1R2路由器的链路是一个低带宽链路。而用户A到代理服务器Z,从代理服务器Z到服务器B都是高带宽链路。那么很显然就可以加速访问服务器B了。

3、Cache作用

Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了 Cache(缓存)技术。还如上图所示,如果在用户 A访问服务器 B某数据 J之前,已经有人通过代理服务器 Z访问过服务器 B上得数据 J,那么代理服务器 Z会把数据 J保存一段时间,如果有人正好取该数据 J,那么代理服务器 Z不再访问服务器 B,而把缓存的数据 J直接发给用户 A。这一技术在 Cache中术语就叫 Cache命中。如果有更多的像用户 A的用户来访问代理服务器 Z,那么这些用户都可以直接从代理服务器 Z中取得数据 J,而不用千里迢迢的去服务器 B下载数据了。

4、客户端访问授权

这方面的内容现今使用的还是比较多的,例如一些公司采用ISA SERVER做为正向代理服务器来授权用户是否有权限访问互联网,挼下图1.3

(图1.3)

图1.3防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。

5、隐藏访问者的行踪

如下图1.4 我们可以看出服务器B并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器B进行交互。如果代理服务器Z被用户A完全控制(或不完全控制),会惯以“肉鸡”术语称呼。

(图1.4)

我们总结一下 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

二、反向代理(reverse proxy

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

使用反向代理服务器的作用如下:

1、保护和隐藏原始资源服务器

如下图2.1

(图 2.1
用户 A 始终认为它访问的是原始服务器 B 而不是代理服务器 Z ,但实用际上反向代理服务器接受用户 A 的应答,从原始资源服务器 B 中取得用户 A 的需求资源,然后发送给用户 A 。由于防火墙的作用,只允许代理服务器 Z 访问原始资源服务器 B 。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器 B ,但用户 A 并不知情。

2、负载均衡

如下图2.2
(图2.2)
当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Z(x)去应答不同的用户,然后发送不同用户需要的资源。
当然反向代理服务器像正向代理服务器一样拥有CACHE的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。这正是CDN技术的核心。如下图2.3
(图2.3)
我们并不是讲解CDN,所以去掉了CDN最关键的核心技术智能DNS。只是展示CDN技术实际上利用的正是反向代理原理这块。
反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外MS ISA也可以用来在WINDOWS平台下做正向代理。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。

三、透明代理

如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了。

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。

透明代理实践的例子就是时下很多公司使用的行为管理软件。如下图3.1

(图3.1)

用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。

本文出自 “丁胖胖的BLOG” 博客,请务必保留此出处http://z00w00.blog.51cto.com/515114/1031287

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39852.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux开启路由转发功能(透明代理环境搭建)

环境: 客户端: 地址 -- 192.168.1.230 网关 -- 192.168.1.56 代理服务器: eth0 -- 192.168.1.56 eth1 -- 192.168.2.56 服务器: 地址 -- 192.168.2.230 网关 -- 192.168.2.56 要求…

Ubuntu编译运行Redsocks2实现透明代理

之前我写过一篇文章《WiFi热点分享ShadowSocks流量实现全局透明代理》里面详细解释了如何使用SSH(或Shadowsocks等其他socks5代理)redsocksiptables实现Ubuntu笔记本电脑分享一个Wifi,然后让所有连接这个wifi的客户端都实现透明代理(科学上网&#xff09…

透明代理和反向代理

 透明代理和反向代理 传统网络: 透明代理: 实现机制:划分Vlan 反向代理: 实现机制: 配置DNS解析以及WAF中配置防护Web服务器的N…

Squid 正反向 / 透明代理

squid是什么? Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得…

透明代理(NAT)

透明代理的实现目前Linuxn内核提供两种实现的方式:NAT和TPROXY。Nat 方式其实就是内内核通过地址转换实现的;而 TPROXY 是内核通过对设置的数据包打标记,然后通过策略路由将打标记的数据包重定向到本地监听进程上。此次我们借助iptables的nat…

akshare量化交易数据集的获取

本文介绍量化交易的数据集:akshare包的安装和调用。akshare的 数据比较全,可以获得 股票、期货、外汇、基金、债券 的历史和实时数据,而且是免费的。 安装 !pip3 install akshare --upgrade 运行结果: 调用包 import pandas as…

突破8140亿美元的加密货币市场, 2019年将走向何方?

作者 | Ash Egan 编译 | Guoxi 2010 年 5 月 22 日,程序员 Laszlo Hanyecz 用一万个比特币购买了两个披萨,相当于一个比特币仅价值 0.003 美分,加密货币第一次有了价值。 2017 年年中,加密货币市场总价值突破千亿美元,…

时间序列预测某加密货币

加密i货币是一种加密和去中心化的数字交换媒介。许多人使用加密货币作为一种投资形式,因为它即使在短时间内也能带来丰厚的回报。比特币、狗狗币是当今流行的加密货币之一。如果你想知道如何通过机器学习预测任何加密货币的未来价格,这篇文章适合你。在本…

中国巨头在NLP领域的大模型布局

什么是大模型? 大规模模型(large-scale model)是近年来人工智能领域的一个热点话题,因为它们可以对自然语言处理(NLP)和其他任务进行更准确和深入的处理。由于大模型需要庞大的计算资源和数据支持&#xf…

模拟股票交易:买入、卖出

1.1创建Strategy模块 此模块用于策略开发,产生交易信号。 1.2创建周期选股策略 什么为周期?简单来说,就是周四买入,周一卖出。这就是一个周期。 1.3生成交易信号 明确哪个交易日买入 哪个交易日卖出,用1和-1 标注。帮…

十大优秀编程项目,让你的简历金光闪闪

全文共3241字,预计学习时长6分钟 被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?” 一些老套的答案有:“做一个象棋游戏”或者“命令行界面”。 这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常使用软件服务化(SaaS)和…

多测师肖sir_高级金牌讲师_简历制作

一、简历制作 1、先查找1个合适的模板 1.1比如伍佰钉,wps,我这里收集的模板,以前学长学姐的简历 要求:1.模板格式要易于编辑和修改,网上有免费的模板; 2、需要太过于个性化(颜色,模块,字体(建议:小四,五号)) 3、班级同学之间的简历不重复(模板一样+技能一样) 4…

基于springboot的简历系统的实现

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不能排除在外。简历系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用…

基于Python技术简历整合分类猎头系统的设计与实现

开发工具(eclipse/idea/vscode等):pycharm 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字): 结构设定. 设置会员和管理员两个身份,会员登录可以查看修改自己账号的个人信息,新…

产品经理/互联网非技术岗如何写一份好的简历?

本文将以互联网非技术岗的简历撰写为主题,分享简历的本质与关键,以及如何写一份合格的简历、简历上需要避开的坑。希望大家看完后能解决90%的简历问题。 文章内容概括: 简历的本质和关键如何写一份有效简历必须避开的地雷用了3年的word简历…

基于SpringBoot的简历管理系统

项目背景 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不能排除在外。简历系统是以实际运用为开发背景,运用软件工程原理和开发方法,…

PHP 图片去除水印 去除logo

使用插件 ffmpeg 点这里 不使用插件 也可以 <?phpfunction CLEAR_ICO($filename,$savename,$Clear_W,$Clear_H,$Clear_X,$Clear_Y){// $filename ;//读取图片名// $savename ;//保存图片路径// $Clear_W ;//去除水印宽// $Clear_H 30;//去除水印高// $Clear_X 254…

如何去掉图片上的水印,四个步骤,方法超级容易又简单

很多时候我们要使用图片的时候&#xff0c;都是从网上下载的&#xff0c;但是网上下载的图片一般都是带有水印的&#xff0c;我们要使用的话就要去除上面的水印。那如何去除图片上的水印呢&#xff1f;今天我就教大家一个简单的方法 而且是不用下载任何去除水印软件的喔。直接在…

如何在图片上加水印防止盗图?

如何在图片上加水印防止盗图&#xff1f;大家都知道&#xff0c;互联网是一个开放的平台&#xff0c;在互联网上可以获取任何你想要的文件或者资料&#xff0c;不仅简单而且成本非常低&#xff0c;所以有很多人会在网上盗用别人的图片&#xff0c;然后为自己所用&#xff0c;这…

用 OpenCV 去除图片中的水印,骚操作!

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达本文转自|AI算法与图像处理 这两天在 Stackoverflow 上面看到了一个有趣的案例&#xff0c;是关于OpenCV 的一个讨论&#xff0c;讨论的主题就是如何用 OpenCV 来去除下面…