RPC Call Message

This section explains the remote procedure call message.

Each remote procedure call message contains the following unsigned integer fields to uniquely identify the remote procedure:

  • Program number
  • Program version number
  • Procedure number
The body of an RPC call message takes the following form:

struct call_body {
     rpcvers_t rpcvers;
     rpcprog_t prog;
     rpcvers_t vers;
     rpcproc_t proc;
     opaque_auth cred;
     opaque_auth verf;
     1 parameter
     2 parameter . . . 
};

The parameters for this structure are as follows:

Item Description
rpcvers Specifies the version number of the RPC protocol. The value of this parameter is 2 to indicate the second version of RPC.
prog Specifies the number that identifies the remote program. This is an assigned number represented in a protocol that identifies the program needed to call a remote procedure. Program numbers are administered by a central authority and documented in the program's protocol specification.
vers Specifies the number that identifies the remote program version. As a remote program's protocols are implemented, they evolve and change. Version numbers are assigned to identify different stages of a protocol's evolution. Servers can service requests for different versions of the same protocol simultaneously.
proc Specifies the number of the procedure associated with the remote program being called. These numbers are documented in the specific program's protocol specification. For example, a protocol's specification can list the read procedure as procedure number 5 or the write procedure as procedure number 12.
cred Specifies the credentials-authentication parameter that identifies the caller as having permission to call the remote program. This parameter is passed as an opaque data structure, which means the data is not interpreted as it is passed from the client to the server.
verf Specifies the verifier-authentication parameter that identifies the caller to the server. This parameter is passed as an opaque data structure, which means the data is not interpreted as it is passed from the client to the server.
1 parameter Denotes a procedure-specific parameter.
2 parameter Denotes a procedure-specific parameter.

The client can send a broadcast packet to the network and wait for numerous replies from various servers. The client can also send an arbitrarily large sequence of call messages in a batch to the server.