因为
NFS
支持的功能相当多,而不同的功能都会使用不同的程序来启动。每启动一个功能就会启用一些端口来传输数据,因此
NFS
的功能所对应的端口才没有固定,而是采用随机取用一些未被使用的小于724的端口来作为传输之用。但如此一来又造成客户端要连接服务器时的困扰,因为客户端要知道服务器端的相关端口才能够联机,此时我们需要远程过程调用(
RPC
)的服务。
RPC
最主要的功能就是指定每个
NFS
功能所对应的端口号,并且回报给客户端,让客户端可以连接到正确的端口上。当服务器在启动
NFS
时会随机选用数个端口,并主动地向
RPC
注册。因此
RPC
可以知道每个端口对应的
NFS
功能。然后
RPC
固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让
NFS
的启动更为容易。注意,启动
NFS
之前,要先启动
RPC
;否则
NFS
会无法向
RPC
注册。另外,重新启动
RPC
时原本注册的数据会不见,因此
RPC
重新启动后它管理的所有程序都需要重新启动以重新向
RPC
注册。
当客户端有 NFS 文件要存取请求时,它如何向服务器端要求数据?
(1)客户端会向服务器端的 RPC (port 111)发出 NFS 文件存取功能的询问请求。
(2)服务器端找到对应的已注册的 NFS daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与 NFS 守护进程来联机。
由于 NFS 的各项功能都必须要向 RPC 注册,因此 RPC 才能了解 NFS 服务的各项功能的port number、PID和 NFS 在主机所监听的IP等,而客户端才能够通过 RPC 的询问找到正确对应的端口。即 NFS 必须要有 RPC 存在时才能成功地提供服务,因此我们称 NFS 为 RPC Server的一种。事实上,有很多这样的服务器都向 RPC 注册。例如,NIS(Network Information Service)也是 RPC Server的一种。所以如图7-3所示,不论是客户端还是服务器端,要使用 NFS 都需要启动 RPC 。
当客户端有 NFS 文件要存取请求时,它如何向服务器端要求数据?
(1)客户端会向服务器端的 RPC (port 111)发出 NFS 文件存取功能的询问请求。
(2)服务器端找到对应的已注册的 NFS daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与 NFS 守护进程来联机。
由于 NFS 的各项功能都必须要向 RPC 注册,因此 RPC 才能了解 NFS 服务的各项功能的port number、PID和 NFS 在主机所监听的IP等,而客户端才能够通过 RPC 的询问找到正确对应的端口。即 NFS 必须要有 RPC 存在时才能成功地提供服务,因此我们称 NFS 为 RPC Server的一种。事实上,有很多这样的服务器都向 RPC 注册。例如,NIS(Network Information Service)也是 RPC Server的一种。所以如图7-3所示,不论是客户端还是服务器端,要使用 NFS 都需要启动 RPC 。