Services for UNIX

Previous Topic Next Topic

Remote Procedure Call Protocol

The Remote Procedure Call (RPC) protocol enables a computer to make a call that is executed on another computer on the network. The Remote Procedure Call protocol is based on a client/server model. The client makes a procedure call that appears to be local but is actually run on a remote computer. During this process, the procedure call arguments are bundled and passed through the network to the server. The arguments are unpacked and run on the server. The result is bundled and passed back to the client, where it is converted to a return value for the client's procedure call.

RPC can use either UDP or TCP; since RPC calls are short, UDP is preferred. Because of this, an RPC call must contain enough information to be run independently, since UDP does not deliver packets in order. In addition, the client can specify a time limit, after which, if the call is not completed successfully, it can be resent or sent to another server.

Four values define an RPC service: the program number, the version number of the RPC protocol, the procedure number (usually assigned sequentially), and whether UDP or TCP is the transport protocol. Each RPC service is assigned a program number.

RPC provides a collection of procedures called programs. Each program is identified by a program number. For example, NFS is a program with a program number of 100003.

When an RPC service starts under UNIX, it registers its service with the portmapper daemon. It registers the RPC program number and version and provides a TCP or UDP port number to which it listens for incoming requests. The portmapper itself is an RPC service that listens on TCP and UDP port 111.

The rpcinfo command is used to show all the RPC programs that are registered on a specified computer. Any RPC programs and their IP port numbers are listed in files by using either portmapper or rpcbind.

Table 11.2 lists some of the options you can use with rpcinfo.

Table 11.2 Command Line Options for rpcinfo

Option Description
-p [host] Lists all registered RPC programs on the specified host.
-u <host program> [ver] <received> Sends the null command to the target host and RPC program using UDP and reports whether a response was received.
-t <host program> [ver] <received> Sends the null command to the target host and RPC program using TCP and reports whether a response was received.
-b <program version> Makes an RPC broadcast for a specific program and version using UDP and lists all responding hosts.

Rpcinfo is useful for diagnosing RPC problems, such as whether or not a server is active, problems with the portmapper daemon, or broadcast-related issues.

Table 11.3 lists the RPC calls that a NFS client can make to a server.

Table 11.3 NFS Version 2 RPC Calls

RPC Call Name Description
create Create file
getattr Get file attributes
link Create link to file
lookup Look up file name
mkdir Create directory
read Read from file
readdir Read from directory
readlink Read from symbolic link
remove Remove file
rename Rename file
rmdir Remove directory
setattr Set file attributes
statfs Get file system attributes
symlink Create symbolic link
write Write to file

Table 11.4 NFS Version 3 RPC Calls

RPC Call Name Description
access Check user access permission
create Create file
commit Commit cached data to stable storage
fsstat Get file system attributes
fsinfo Get file system information
getattr Get file attributes
link Create link to file
lookup Look up file name
mkdir Create directory
mknod Create special device node
pathconf Retrieve POSIX information
read Read from file
readdir Read from directory
readdirplus Extended read from directory
readlink Read from symbolic link
remove Remove file
rename Rename file
rmdir Remove directory
setattr Set file attributes
symlink Create symbolic link
write Write to file

© 1985-2000 Microsoft Corporation. All rights reserved.