正向代理与反向代理

315 阅读3分钟

代理

什么是代理

代理也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。

例如:一些网关、路由器等网络设备都具备网络代理的功能。

代理服务有利于保障网络终端的隐私或者安全,可以在一定程度上阻止网络攻击(因为通过代理,可以隐藏真正的服务器端/客户端)

代理服务器

左边和右边的电脑在通讯时候,需要经过中间的电脑中转,而中间的那部电脑就是代理服务器。

代理请求过程

客户端首先根据代理服务器所使用的代理协议,与代理服务器创建连接,接着按照协议请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。

代理协议

此处的协议指的是网络传输协议。
主要是两种:

  • Socks
  • HTTP




正向代理

  • A需要钱,A知道C由很多钱,想向C借钱。
  • 但是A和C有矛盾,于是A想到通过B去借C借钱。
  • B向C借到钱了,C不知道是A的存在。
  • 这样B就帮助A借到了Z的钱。

在这个过程,B就充当了代理借钱的角色,并且是代替A去借钱的,这样就是正向代理。



反向代理

  • A需要钱,C有很多钱,A不知道C很多钱。
  • A找B借钱。
  • B知道C有很多钱。
  • B向C借钱,并把借到的钱给A,而没有使用自己的钱借给A。
  • A拿到钱以后,以为钱是B的,A不知道C的存在。

    在这个过程当中,B也充当了代理借钱的角色,不过这次不是代替A去借的,而是用C的钱借给A的,换言之即是代替C将钱借给了A,这就是反向代理。



两者区别

  1. 服务对象不同
  • 正向代理,代理的是客户端,也就是例子中的A,服务端不知道实际发起请求的客户端
  • 反向代理,代理的是服务端,也就是例子中的C,客户端不知道实际提供服务的服务端

正向代理

反向代理

  1. 安全模型不同
  • 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务
  • 反向代理都对外都是透明的,访问者并不知道自己访问的是代理,访问者不知道服务节点的存在,认为处理请求的就是代理节点

总而言之,正向代理是从客户端的角度出发,服务于局域网用户,以访问非特定的服务,其中最典型的例子就是翻墙;反向代理正好与此相反,从服务端的角度出发,服务于所有用户,隐藏实际的服务节点,服务节点的架构对用户透明,以代理节点统一对外服务。



总结

正向代理代理的对象是客户端,隐藏真实客户端
反向代理代理的对象是服务端,隐藏真实服务端