Remote Procedure Calls (RPC) allow a program to execute a procedure in another address space without needing to know where it is located. RPC uses client and server stubs that conceal the underlying message passing between client and server processes. The client stub packs the procedure call into a message and sends it to the server stub, which unpacks it and executes the procedure before returning any results. This makes remote procedure calls appear as local procedure calls to improve transparency. IDL is used to define interfaces and generate client/server stubs automatically to simplify development of distributed applications using RPC.