Linux1 RPC简介

  • 格式:doc
  • 大小:116.50 KB
  • 文档页数:2

Linux1 RPC简介
NFS虽然可以在网络中进行资源共享,但NFS本身并不提供数据传输服务的功能。

另外,NFS支持多种功能,而不同的功能使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口无法固定,而是采用随机取用那些未被使用的小于1024的端口来作为传输之用。

但是,这样会使得客户端无法连接服务器,因为客户端只有在知道服务器端的数据传输端口之后才能够进行连接。

远程过程调用(Remote Procedure Call,RPC)定义了一种进程间通过网络进行交互通信的机制,RPC允许客户端通过网络向远程服务器发出请求,而不需要了解底层通信协议的细节。

NFS必须借助RPC来实现数据的传输,当发生数据传输时,NFS服务器将起到RPC服务器的作用,而NFS客户端类似于RPC客户端,这样,NFS服务器和客户端就可以通过RPC协议进行数据传输。

RPC最主要的功能就是指定每个NFS功能所对应的端口号,并且发送该信息到客户端,让客户端可以连接到服务器上正确的端口号。

服务器在启动NFS时会随机取用多个端口,并主动向RPC注册,因此,RPC可以知道每个端口所对应的NFS 功能,然后RPC将固定使用端口111来监听客户端的需求并应答客户端正确的端口,如图3-3所示为其整个工作流程示意图。

注意用户在启动NFS之前,应该首先启动RPC,否则NFS将无法向RPC注册。

另外,如果重新启动RPC,那么之前注册的端口数据将会消失。

因此,在重新启动RPC之后,它所管理的所有程序都需要重新启动以重新向RPC注册。

图3-3 NFS与RPC服务及文件系统操作流程示意图
当客户端需要通过NFS存取文件时,将通过以下步骤向服务器请求数据:
●客户端向服务器端的RPC(port111)发出NFS文件存取功能的询问请求。

●服务器端在找到对应的已注册NFS daemon(守护进程)端口后,会通知
客户端。

●客户端在了解正确的端口后,将直接与NFS daemon连接。

由于NFS的各项功能都需要向RPC注册,所有RPC才能够了解NFS这个服务的各项功能的端口号(Port Number)、PID、NFS在主机所监听的IP等,而客户端才能够通过向RPC询问找到正确的端口号。

也就是说,NFS需要有RPC的协助才能够成功地为客户端提供服务,因此也称NFS为RPC Server的一种。