Stands for "Remote Procedure Call."
An RPC is a message instructing one computer to execute code on behalf of another computer over a network. It allows a program running locally on one computer to offload a procedure (a block of code that performs a specific task) to another program on a server, which returns the result. The program that issued the RPC then treats the result of the remote procedure the same as it would treat the result of one that ran locally.
RPCs utilize a client-server model, where multiple client computers may connect to a server to send instructions and receive data. When a program issues an RPC, it includes a set of parameters to instruct the server what procedure to run and how to run it. For example, a client computer sending an RPC message to DNS server would include the domain name it wants to resolve as a parameter; another message sending a print job to a network printer would include print settings like paper size and orientation as parameters.
There is no single RPC protocol. Instead, the idea of RPCs is the concept that many protocols use to enable remote execution of code. Some common RPC protocols include XML-RPC (which formats an RPC using XML markup) and JSON-RPC (which formats an RPC using JSON). However, all RPC protocols send messages in a similar way. A client program first issues a procedure call to a piece of client-side code, called a stub, that acts as a proxy for that procedure. The stub communicates with the server to tell it what procedure to run and what parameters to use. The server performs the procedure and sends the result back to the stub, when returns the result to the program that issued the RPC.