Remote procedure call (RPC) architecture is popular in building salable and distributed client/server model applications. RPC allows a client to a make procedure call to a server on a different address space without understanding the network configuration as if the server was in the same network (making a local procedure call). RPC packages all have a simple goal: to make the process of executing code on a remote machine as simple and straightforward as calling a local function. Thus, to a client, a procedure call is made, and some time later, the results are returned. The server simply defines some routines that it wishes to export. The rest of the magic is handled by the RPC system, which in general has two pieces: a stub generator (sometimes called a protocol compiler), and the run-time library.