RPC

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
TCP/IP群
アプリケーション層

BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP

カテゴリ
トランスポート層

TCP / UDP / DCCP / SCTP / RSVP / ECN

カテゴリ
ネットワーク層

IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec

カテゴリ
リンク層

ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI)

カテゴリ

RPC: remote procedure call、リモートプロシージャコール)とは、プログラムから別のアドレス空間(通常、共有ネットワーク上の別のコンピュータ上)にあるサブルーチン手続きを実行することを可能にする技術。遠隔手続呼出とも。その際に遠隔相互作用の詳細を明示的にコーディングする必要がない。つまり、プログラマはローカルなサブルーチン呼び出しと基本的に同じコードをリモート呼び出しについても行う。RPCを行うソフトウェアがオブジェクト指向プログラミングに基づく場合、RPC のことを リモート呼び出しremote invocation)あるいは リモートメソッド呼び出しremote method invocationRMI)と呼ぶこともある(Java RMIなど)。

RPC には例えば、ONC RPCDCE/RPC といった互いに非互換な様々な技術が存在する。

目次

起源と歴史 [編集]

RPC の考え方は、少なくともRFC 707が発表された1976年まで遡る。最初に RPC を商用に実用化したのはゼロックスの「Courier」であり、1981年のことであった。UNIXで最初に広く使われるようになった RPC 実装はサン・マイクロシステムズの RPC(ONC RPC)であり、NFS の基盤として使われた。ONC RPC は現在でも広く使われている。

もう一つのUNIXでの初期の実装として、アポロコンピュータNetwork Computing System (NCS) がある。NCS は後に OSFDistributed Computing Environment (DCE) で DCE/RPC の基盤として使われた。その約10年後、マイクロソフトが DCE/RPC を同社の RPC (MSRPC) の基盤として採用し、DCOM の実装に使った。同じころ(1990年代中盤)、継承機構を備えた分散オブジェクトに関する RPC パラダイムとして、パロアルト研究所ILUObject Management GroupCORBA が登場した。

メッセージパッシング [編集]

RPCクライアントは、実行する手続きと引数とを要求メッセージとして既知のリモートサーバに送信することで、RPCを開始する。サーバーがRPCを処理している間、クライアント側はブロックされる。サーバー上でメッセージが処理され、応答がクライアントに戻ってくると、クライアント上のプロセスは処理を続行する。

RPC プロトコルの実装によって微妙な違いをもった多くのバリエーションがあり、それらの間には互換性がない。

RPCが通常のローカル呼び出しと比べて違う点で重要なのは、予測できないネットワーク上の問題で失敗することがあるという点である。またそのような場合、手続きが実際に実行されたかどうかをクライアントが知ることができないことがある。そういったケースでは、二重に手続きを実行しても影響のない場合は容易に対処できるが、そうでなければ適切な対処は困難である。そのため、注意深く記述された低レベルなサブシステムの制限下で呼び出しコードを実行するという方法がよくとられる。

標準コンタクト機構 [編集]

各種クライアントからサーバへのアクセスを可能とするため、いくつかの標準 RPC システムが開発されてきた。それらの多くはインタフェース記述言語 (IDL) を使って各種プラットフォーム間の RPC を可能としている。

IDL ファイルはクライアントとサーバ間のインタフェースのためのコードを生成するのに使われる。最も一般的なツールとしては RPCGEN がある。

RPC に類似する概念 [編集]

  • JavaJava RMI API は、標準的 UNIX RPC とほぼ同等の機能を提供する。
  • XML-RPC は、呼び出しをXMLで符号化し、HTTP を通信プロトコルに使用する RPC プロトコルである。
  • マイクロソフトの .NET Remoting は、Windows プラットフォーム上に実装された分散システムでの RPC 機能を提供するものである。

関連項目 [編集]

参考文献 [編集]

この記述は GNU Free Documentation License のもとに公開されているコンピュータ用語辞典『 Free On-line Dictionary of Computing (FOLDOC) 』に基づいています。