portmap进程的主要功能是把RPC程序号转化为Internet的端口号
当一个RPC服务器启动时,会选择一个空闲的端口号并在上面监听(每次启动后的端口号各不相同),同时它作为一个可用的服务会在portmap进程注册。一个RPC服务器对应惟一一个RPC程序号,RPC服务器告诉portmap进程它在哪个端口号上监听连接请求和为哪个RPC程序号提供服务。经过这个过程,portmap进程就知道了每一个已注册的RPC服务器所用的Internet端口号,而且还知道哪个程序号在这个端口上是可用的。portmap进程维护着一张RPC程序号到Internet端口号之间的映射表,它的字段包括程序号、版本号、所用协议、端口号和服务名,portmap进程通过这张映射表来提供程序号-端口号之间的转化功能
如果portmap进程停止了运行或异常终止,那么该系统上的所有RPC服务器必须重新启动。首先停止NFS服务器上的所有NFS服务进程,然后启动portmap进程,再启动服务器上的NFS进程。
但portmap只在第一次建立连接的时候起作用,帮助网络应用程序找到正确的通讯端口,但是一旦这个双方正确连接,端口和应用就绑定,portmap也就不起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有用。
网络文件系统(NFS,Network FileSystem)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。
因为NFS支援的功能相当的多,而不同的功能都会使用不同的程式来启动,每启动一个功能就会启用一些port来传输资料,因此,NFS的功能所对应的port才没有固定住,而是采用随机取用一些未被使用的小于1024的埠口来作为传输之用。此时我们就得需要远端程序呼叫(RPC)的服务啦。 RPC最主要的功能就是在指定每个NFS功能所对应的port number,并且回报给用户端,让用户端可以连结到正确的埠口上去。那RPC又是如何知道每个NFS的埠口呢?这是因为当伺服器在启动NFS时会随机取用数个埠口,并主动的向RPC注册,因此RPC可以知道每个埠口对应的NFS功能,然后RPC又是固定使用port111来监听用户端的需求并回报用户端正确的埠口,所以当然可以让NFS的启动更为轻松愉快了!
步骤:
用户端会向伺服器端的RPC (port 111)发出NFS档案存取功能的询问要求;
伺服器端找到对应的已注册的NFS daemon埠口后,会回报给用户端;
用户端了解正确的埠口后,就可以直接与NFS daemon来连线。
由于NFS的各项功能都必须要向RPC来注册,如此一来RPC才能了解NFS这个服务的各项功能之port number, PID,NFS在主机所监听的IP等等,而用户端才能够透过RPC的询问找到正确对应的埠口。也就是说,NFS必须要有RPC存在时才能成功的提供服务,因此我们称NFS为RPCserver的一种。