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

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

xuwenyan1周前 (08-01)c++250

什么是代理?

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

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

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

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

什么是正向代理?

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

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

image.png

正向代理有什么意义?

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

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

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

什么是反向代理?

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

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

image.png

反向代理有什么意义?

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

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

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

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

    相关文章

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

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

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

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

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

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

    解决程序在xp系统总是莫名奇妙的崩溃问题(/Zc:threadSafeInit- )

    解决程序在xp系统总是莫名奇妙的崩溃问题(/Zc:threadSafeInit- )

    现象: 程序在xp系统上面总是莫名其妙的崩溃,检查代码看不出任何问题,感觉代码都很好。即使你远程调试,找到了崩溃的点,当你注释了崩溃点之后,还是会崩溃到别的地方。 当你遇到了这种情况的时...

    uafxcwd.lib(afxmem.obj) : error LNK2005:

    uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法

    如果在编译MFC程序的时候出现下列及类似的错误: 1˃uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new...

    C++ 获取进程所在目录(进程全路径)

    C++ 获取进程所在目录(进程全路径)

    打开windows任务管理器,会看到很多的进程在运行,随机挑选一个,如何通过c++代码获取某一个进程的所在全路径呢?这也是在windows软件开发中经常遇到的需求。通过进程名获取进程全路径由于可能很多...

    c++函数模板参数类型限定

    c++函数模板参数类型限定

    函数模板函数模板可以实现对不同数据类型做统一操作,比如比较两个数据的大小:template<typename T> bool compare(T& ...

    发表评论

    访客

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