java面试题之个人对正向代理和反向代理的理解

为什么使用代理?

提高响应速度:

因为我们发送给代理服务器的请求,目标主机(真正的服务器)返回的数据会储存在代理服务器主机的硬盘上,当下一次同样的请求访问时,直接从硬盘读取,加快访问速度,尤其是对一些静态资源较多的电商网站效益明显。

充当一个防火墙的作用:

一个服务器既当作业务机又当作运维机很明显压力是很大的,此时使用代理服务器把不正当的请求和某些不安全的信息过滤掉,这样业务目标主机就省去了很多业务,两台服务器同时工作肯定是比一台强很多的。

突破访问限制:

也就是平常说的,访问我们访问不到的站点,就拿国内的谷歌来说吧,国内不是访问不到嘛,但是国外比如说美国韩国就可以访问到,但是我们也可以访问到韩国的某个站点,那中国人多啊,少了咱们中国人谷歌赚的不多吧,于是谷歌想了一个办法,建立一个或多个代理服务器,用来访问它自己的目标主机,也就是谷歌网站,再把代理服务器的地址给我们去访问,这样就突破了访问限制。

代理分几种?

两种:正向代理和反向代理

说说对正向代理的理解吧:

正向代理,英文是forward proxy,一个介于用户客户端与目标主机服务器端的服务器,客户端向代理服务器发送一个目标性的请求(我要访问哪哪哪),代理服务器转发客户端的请求给目标主机服务器,然后将目标主机服务器的结果返回给客户端,我们一般说的代理都是正向代理,这就是我对正向代理的理解。

说说什么是反向代理?

反向代理,英文是 reverse proxy,之所以叫反向代理,是因为正向代理是有目的性的去访问目标主机服务器的代理服务器,而反向代理是用户不知道代理服务器的存在下,直接访问目标主机服务器的站点,而目标主机中间多了一个代理服务器,同正向代理一样,转发客户端请求给目标主机服务器,然后返回结果给用户端,用户看起来没有什么差异,以为自己访问了目标主机,实际上不是。

你说了这么多,说说他俩的不同之处吧:

正向代理和反向代理的区别:

一个是用户向代理服务器发送的请求,一个是用户直接请求的目标主机,虽然都是代理服务器转发请求,但是用户看来是不一样的。

也是同上边所说的一样,正向代理服务器不知道真正是谁发的请求,反向代理服务器是用户不知道真正访问了哪个服务器。

两个代理服务器所存放的位置也不一样,正向代理服务器是专门来转接请求的,这点用户是直到的,所以用户直接访问代理服务器,用户希望代理服务器转交他的内容,因此正向代理服务器是放在用户与目标主机中间的。

与正向代理服务器不同,反向代理是用来保护目标主机服务器的,用户只知道自己访问了一个站点,并不知道是不是代理服务器,而代理服务器都是放在目标主机服务器端上的,通常都是使用第三方的反向代理服务器,目前用的最多的应该就是ngnix,ngnix可以帮助目标主机服务器做负载均衡,缓存等等,提高网站的访问速度。百度啦,淘宝啦,京东等都在用。

 

你可能感兴趣的:(Java)