RPC (Remote Procedure Call) – 원격 절차 호출
RPC[알피씨]는 한 프로그램이 네트웍 상의 다른 컴퓨터에 위치하고 있는 프로그램에 서비스를 요청하는데 사용되는 프로토콜로서, 이때 서비스를 요청하는 프로그램은 네트웍에 대한 상세 내용을 알 필요가 없다 (절차 호출이란 때로 함수 또는 서브루틴 호출의 의미로도 사용된다). RPC는 클라이언트/서버 모델을 사용하는데, 서비스를 요청하는 프로그램이 클라이언트이고, 서비스를 제공하는 프로그램이 서버이다.
다른 정상적인 또는 자체적인 프로시저의 호출과 마찬가지로, RPC도 요청하는 프로그램이 원격 절차의 처리 결과가 반환될 때까지 일시 정지되어야 하는 동기 운영이다.
그러나, 가벼운 프로세스의 사용이나, 같은 주소공간을 공유하는 스레드 등은 여러 개의 RPC들을 동시에 수행될 수 있도록 허용한다.
RPC를 사용하는 프로그램 문장들이 실행 프로그램으로 컴파일될 때, 컴파일된 코드 내에 RPC의 대리인처럼 동작하는 스터브가 포함된다.
그 프로그램이 실행되어, 절차 호출이 이루어질 때, 스터브는 그 요구를 받아서 그것을 로컬 컴퓨터 내에 있는 클라이언트 런타임 프로그램에게 전달한다.
클라이언트 런타임 프로그램은 원격 컴퓨터와 서버 프로그램과 어떻게 접촉해야하는지 대한 지식을 가지고 있으므로, 네트웍을 통해 원격절차를 요구하는 메시지를 보낸다.
이와 유사하게 서버는 런타임 프로그램과 원격절차 그 자신과 인터페이스를 하는 스터브을 포함한다.
처리 결과들은 같은 방식으로 되돌려진다.
RPC 모델과 구현방법에는 몇 가지가 있다.
가장 보편적인 모델과 이행방법은 OSF의 DCE이다.
IEEE는 1991년 11월에 ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC에서 RPC를 정의하였다.