RPC机制

本文介绍了RPC(Remote Procedure Call)的工作原理,它允许一台机器(A)中的函数调用另一台机器(B)上的函数。RPC机制包括函数编号、服务编号和版本号来定位具体操作。RPC报文包含报文头和净荷,用于在TCP或UDP中传输。文中还提到了RPC报文的结构和UNIX认证机制。
摘要由CSDN通过智能技术生成

        前面几篇文章一直提到NFS客户端和服务器之间采用RPC进行通信,客户端向服务器发送RPC请求,服务器对客户端的身份进行验证,验证通过后处理RPC请求,最后将结果封装到应答消息中发送给客户端。这篇文章中就稍微讲讲RPC机制的工作原理。

1.RPC原理

        RPC机制基于传统的函数调用原理。在编程过程中,我们会将一个大功能分割成若干个小功能,每个小功能用一个函数实现,通过函数调用将这些函数连接起来。一般而言,这些函数必须运行在同一台机器中。而RPC机制提供了一种方法,它可以将函数分散到不同的机器中,允许机器A中的main函数调用机器B中的func4。


        这就很有意思了,一台机器上的函数竟然可以调用另一台机器上的函数。如果func4的功能是删除一个文件,那么我们不就可以在main函数中调用func4删除机器B中的文件了吗?事实上,NFS文件系统就是这么干的。那么func4是如何知道要删除哪个文件呢,对了,就是通过参数。main函数将文件路径作为参数传递给func4,func4删除文件后将结果作为返回值传回main函数,就是这么简单。

        但是,我们不可能只删除文件,还可能创建新文件、读取文件数据、查看文件属性,我们有很多要求。没问题,我们可以定义一堆函数,这些函数构成了一个函数集合,每个请求都有相应的处理函数。机器A和机器B是两台不同的机器,可能运行不同的系统(如机器A运行Linux,机器B运行Windows),如果让Linus和Bill Gates就这些函数名称达成一致好像也不是一件容易的事情,而且他们也根本没有时间管这些小事。那好办,我们用编号表示函数,比如编号为0的函数负责删除文件,编号为1的函数负责创建文件,至于这些函数如何命名,就由操作系统决定了。这里还有一个问题,现实世界中有很多应用使用了RPC机制,如NFS、MOUNT、NLM服务,每个应用中的函数都从0开始编号,那么当机器A对机器B说:"请执行编号为1的函数",那么机器B执行哪个服务中编号为1的函数呢?为此,我们为各种服务分配了一个编号,比如NFS服务的编号是100003,MOUNT服务的编号是100005,NLM服务的编号是100021。最后一个问题,我们在编程时经常多函数进行修改,会形成不同的版

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值