正向代理和反向代理

前言

工作中遇到了一个网络代理的问题,简单的对代理总结了一下。

网络代理实际上就是一个中介。简单来说,客户端A和服务器B不能够直接连接,此时通过一个中间的代理服务器C,使得客户端A通过代理服务器C能够连接到服务器B,就是网络代理。

常见的网络代理有正向代理和反向代理两种。

一、正向代理

正向代理是客户端代理,类似于一个跳板,当客户端A无法访问服务器B时,可以通过一个正向代理去间接的访问,所以客户端是需要配置代理服务器的IP,一般称为客户端代理。

举例来说,国内访问Google直接访问无法访问到,我们就可以通过一个正向代理服务器,将请求发送到代理服务器,代理服务器去访问Google。这样代理服务器就可以从Google中取到数据返回给我们,这样我们就能够成功访问Google。

由于正向代理客户端需要进行配置,作为一个Android开发,对正向代理需要有一定的了解。

正向代理如图所示:

正向代理.jpg
1. 在Android中的正向代理配置方式

在Android中配置整下代理可以通过进行全局配置的方式进行配置,示例代码如下:

 public void setProxy(){
        // HTTP 代理,只能代理 HTTP 请求
        System.setProperty("http.proxyHost", "IP地址");
        System.setProperty("http.proxyPort", "端口");

        // HTTPS 代理,只能代理 HTTPS 请求
        System.setProperty("https.proxyHost", "IP地址");
        System.setProperty("https.proxyPort", "端口");
    }

此方法需要在程序开始运行的时候进行调用,例如在Application的onCreate方法中进行调用。

2. Android测试代理配置

Android测试代理配置是否生效推荐使用Charles软件。Charles软件是一个比较常用的客户端抓包软件,可以通过更改WiFi配置完成对客户端的抓包。

抓包流程在此不再说明,需要注意的是,在Android配置抓包时,安装Charles软件的PC实际上相当于一个代理服务器,其代理的地址是你当前PC的IP地址。可以根据这一特性,通过抓包流程来同时测试代理配置是否生效。

二、 反向代理

反向代理中,客户端是无感知代理的存在,以代理服务器来接受Internet上的链接连接请求,然后将请求转发给内部网络的服务器上,并将服务器上得到的结果返回给Internet上请求链接的客户端。

反向代理是需要服务器端进行配置,客户端不需要进行配置,也成为服务端代理。

具有如下的作用:

  1. 反向代理可以保证内网的安全,公网作为访问地址,web服务器作为内容,阻止web攻击。
  2. 负载均衡。

反向代理如图所示:


反向代理.jpg

你可能感兴趣的:(正向代理和反向代理)