RMI

RMI(Remote Method Invocation)远程方法调用,RPC本身的实现方式,可以先看一下RPC的实现方式-->https://blog.youkuaiyun.com/Candyys/article/details/108774099

此处讲的是java中的rmi。

首先我看到两张还不错的图。

用到的类和方法:

好了,我们往下。

RMI全部的宗旨就是尽可能简化远程接口对象的使用。

RMI的通信模型

从客户端-服务器模型来看,客户端程序直接调用服务端,JRMP( Java Remote Method Protocol)协议通信,这个协议类似于HTTP协议,规定了客户端和服务端通信要满足的规范。

代理模式在RMI上的应用

 

Stub(远程对象):远程对象的代理,客户端可以像调用本地方法一样直接通过它来调用远程方法。

Stub中包含了远程对象的定位信息,如Socket端口、服务器主机地址,并实现了远程调用过程中具体的底层网络通信细节。

Registry(服务发现):默认监听在1099端口上,借助 JNDI 发布并调用了 RMI 服务。实际上,JNDI 就是一个注册表,服务端将服务对象放入到注册表中,客户端从注册表中获取服务对象。

RMI 服务在服务端实现之后需要注册到 RMI Server 上,然后客户端从指定的 RMI 地址上 Lookup 服务,调用该服务对应的方法即可完成远程方法调用。

Registry 是个很重要的功能,当服务端开发完服务之后,要对外暴露,如果没有服务注册,则客户端是无从调用的,即使服务端的服务就在那里。

上图逻辑:

  1. Server端监听一个端口,这个端口是JVM随机选择的;

  2. Client端并不知道Server远程对象的通信地址和端口,但是Stub中包含了这些信息,并封装了底层网络操作;

  3. Client端可以调用Stub上的方法;

  4. Stub连接到Server端监听的通信端口并提交参数;

  5. 远程Server端上执行具体的方法,并返回结果给Stub;

  6. Stub返回执行结果给Client端,从Client看来就好像是Stub在本地执行了这个方法一样;

 

 

WeblogicRMI

通过Weblogic RMI作为反序列化入口导致的漏洞太多了,其实Weblogic RMI是服务器框架的组成部分。

 

参考链接:

https://blog.youkuaiyun.com/sinat_34596644/article/details/52599688

https://blog.youkuaiyun.com/lmy86263/article/details/72594760

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值