RFC 1057 (rfc1057) - Page 2 of 25
RPC: Remote Procedure Call Protocol specification: Version 2
Alternative Format: Original Text Document
RFC 1057 Remote Procedure Call, Version 2 June 1988
particular hardware entity (host) or software entity (process or
program) could operate in both roles at different times. For
example, a program that supplies remote execution service could also
be a client of a network file service. On the other hand, it may
simplify software to separate client and server functionality into
separate libraries or programs.
3. THE RPC MODEL
The Sun RPC protocol is based on the remote procedure call model,
which is similar to the local procedure call model. In the local
case, the caller places arguments to a procedure in some well-
specified location (such as a register window). It then transfers
control to the procedure, and eventually regains control. At that
point, the results of the procedure are extracted from the well-
specified location, and the caller continues execution.
The remote procedure call model is similar. One thread of control
logically winds through two processes: the caller's process, and a
server's process. The caller process first sends a call message to
the server process and waits (blocks) for a reply message. The call
message includes the procedure's parameters, and the reply message
includes the procedure's results. Once the reply message is
received, the results of the procedure are extracted, and caller's
execution is resumed.
On the server side, a process is dormant awaiting the arrival of a
call message. When one arrives, the server process extracts the
procedure's parameters, computes the results, sends a reply message,
and then awaits the next call message.
In this model, only one of the two processes is active at any given
time. However, this model is only given as an example. The Sun RPC
protocol makes no restrictions on the concurrency model implemented,
and others are possible. For example, an implementation may choose
to have RPC calls be asynchronous, so that the client may do useful
work while waiting for the reply from the server. Another
possibility is to have the server create a separate task to process
an incoming call, so that the original server can be free to receive
other requests.
There are a few important ways in which remote procedure calls differ
from local procedure calls:
1. Error handling: failures of the remote server or network must be
handled when using remote procedure calls.
2. Global variables and side-effects: since the server does not have
Sun Microsystems