Remote Procedure Call (RPC) is an interprocess communication technique. It is a powerful technique for constructing distributed, client-server based computing. It is based on extending the conventional local procedure calling so that the called procedure need not exist in the same address space as the calling procedure.
The requesting program is a client and the service providing program is the server. Like a regular or local procedure call, an RPC is a synchronous operation requiring the requesting program to be suspended until the results of the remote procedure (ACK) are returned. RPC calls can be essentially divided into three types as Callback RPC, Broadcast RPC and Batch-mode RPC.
RPC architecture has mainly five components of the program as Client, Client Stub (stub – a small program routine that substitutes for a longer program), RPC Runtime, Server Stub and Server. When program statements using RPC framework are compiled into an executable program, a stub is included in the compiled code which acts as the representative of the remote procedure code. When the program is run and procedure call issued, the stub receives the request and forwards it to a client runtime program in the local computer.
The main advantage of introducing RPC is to simplify the development of distributed application through hiding all the network code into the stub function. Furthermore, the programmer doesn’t have to worry about the details of managing sockets, port numbers and byte ordering.
In 2003, the famous ‘Blaster’ worm exploited the RPC vulnerability of MS Windows 2000 & XP OS.
Image Credit: Techdifferences