当前位置:首页 > c++ > 什么是正向代理和反向代理?

什么是正向代理和反向代理?

xuwenyan2周前 (08-01)c++380

什么是代理?

代理(Proxy)也称网络代理,是一种特殊的网络服务,允许一个终端(一般为客户端)通过这个服务与另一个终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,在一定程度上能够阻止网络攻击。

提供代理服务的电脑系统或其它类型的网络终端称为代理服务器英语:Proxy Server。一个完整的代理请求过程为:客户端首先根据代理服务器所使用的代理协议,与代理服务器创建连接,接着按照协议请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。在后一种情况中,代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器并不会向目标服务器发送请求,而是直接传回已缓存的资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。

另外在部分实行网络审查的国家(,可以通过使用代理服务器的方式以突破网络审查(俗称“翻墙”)

详情见维基百科:代理服务器

什么是正向代理?

正向代理主要的代理对象用户客户端,代理服务器位于用户客户端与网站服务器之间,主要用于解决用户客户端的IP访问受限问题和网络安全性问题。

用户访问目标网站服务器时,访问请求会先发送到代理服务器,再由代理服务器转发给目标网站;当目标网站服务器发回响应数据时同样也会经由代理服务器传回用户客户端。这也正是大多数用户接触最多的代理类型。

image.png

正向代理有什么意义?

  • 访问受地理位置限制的网络:使用代理后,用户可以有针对性的访问不同国家/地区的各种内容

  • 访问匿名:使用代理后会隐藏真实的IP地址,这就是为什么使用正向代理服务器可以保证更高级别的匿名性和安全性。

  • 网页抓取:代理最常见的用法是网页抓取。网页抓取有助于公司在市场上保持竞争力。

什么是反向代理?

反向代理主要的代理对象是服务器服务端,为服务器在其适当的位置设置了代理,以充当真实的服务器,主要用于解决服务端的资源利用问题和服务器稳定性问题。

反向代理主要是指通过代理服务器来接受访问请求,再由代理服务器转发到内部网络上的服务器,在得到响应的数据后再由代理服务器转发给用户客户端,像常见的在线客服就是反向代理的一种运用。

image.png

反向代理有什么意义?

  • 缓存:反向代理能够缓存通常请求的数据。存储大量图片和视频的企业可以通过缓存这些内容并减少互联网服务器的负载来加快其网站的性能。

  • 匿名性和安全性:由于反向代理会拦截所有传入请求,因此它们可以为后端服务器提供额外的保护。它通过阻止来自特定IP地址的可疑流量来帮助防止任何恶意行为者滥用Web服务器。

  • 负载均衡:经常访问的网站有时候可能需要反向代理服务器来处理传入流量。一个受欢迎的站点可能会在多个后端服务器之间分配流量,而不是自己处理它,从而提高它处理许多请求的能力。如果其中一台服务器过载且出现故障,则可以将流量重定向到其他在线服务器,以保持网页运行。网站工程师甚至可以为这个负载均衡器添加更多的后端服务器,以增加容量并满足不断增长的性能需求。

    文章作者:xuwenyan
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    相关文章

    C++如何实现挂起进程、恢复进程

    C++如何实现挂起进程、恢复进程

    1:枚举进程的所有线程,使用SuspendThread函数挂起每一个线程,需要恢复时使用ResumeThread函数恢复。因为挂起和恢复的顺序是不可预知的,所以可能会导致一些多线程程序崩溃,单线程程...

    C++从dll导出lib

    C++从dll导出lib

    一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件EXAMPLE: DUMPBIN VideoDeCoder.dll /EXPROTS /OUT:Video...

    C++实现win32窗口文件拖拽

    C++实现win32窗口文件拖拽

    如题,C++如何实现win32窗口文件拖拽,直接上代码 方法1:使用win32消息实现 此方法的弊端在于,无法过滤可以拖拽的文件,拖拽时显示的图标也默认的,无法像资源管理器那样自定义。实...

    C++指针*为什么靠后会比较好?

    C++指针*为什么靠后会比较好?

    大多数书中和大神的代码里,往往指针的*都是靠变量而不是靠类型的,这主要是为了不造成我们第一眼对变量类型的误解和对指针类型的误解,比如: int* p1,p2 我们一眼看上去是不是通常会觉...

    C++如何获取控制台程序的输出内容?

    C++如何获取控制台程序的输出内容?

    很多工具程序(如ffmpeg)的进度显示往往都是以控制台字符显示的方法,我们可能需要调用这种控制台工具去完成工作,但同时又希望以友好的ui界面去显示当前的工作状态(如进度)。此时我们能想到的就是运行...

    使用GDI、MFC_GDI、GDI+绘制数组RGBA序列

    使用GDI、MFC_GDI、GDI+绘制数组RGBA序列

    学习ffmpeg时遇到一个问题,ffmpeg解码出RGB颜色后怎么绘制到屏幕上,于是将GDI、MFC_GDI、GDI+等方式都记录一下 1:注意按windows的要求,R、G、B、A顺序要调整...

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法和观点。