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

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

为什么使用代理?

提高响应速度:

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

充当一个防火墙的作用:

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

突破访问限制:

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

代理分几种?

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

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

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

说说什么是反向代理?

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

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

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

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

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

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

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

相关文章
|
2月前
|
缓存 Java 关系型数据库
【Java面试题汇总】ElasticSearch篇(2023版)
倒排索引、MySQL和ES一致性、ES近实时、ES集群的节点、分片、搭建、脑裂、调优。
【Java面试题汇总】ElasticSearch篇(2023版)
|
18天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
39 1
Java面试题之Java集合面试题 50道(带答案)
|
6天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
20 5
|
5天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
14 1
|
5天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
[Java]静态代理与动态代理(基于JDK1.8)
|
12天前
|
Java
Java访问外网图片地址时,如何添加代理?
【10月更文挑战第14天】Java访问外网图片地址时,如何添加代理?
19 2
|
14天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
21 3
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
334 37
|
17天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
41 0
Java面试题之cpu占用率100%,进行定位和解决
|
21天前
|
存储 安全 Java
java基础面试题
java基础面试题
21 2