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

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

为什么使用代理?

提高响应速度:

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

充当一个防火墙的作用:

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

突破访问限制:

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

代理分几种?

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

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

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

说说什么是反向代理?

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

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

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

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

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

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

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

相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
98 2
|
2天前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
1天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
2天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
2天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
16 4
|
2天前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
|
2天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
22天前
|
Java
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
90 14
|
2月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!