San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
API Security

リモートプロシージャコールとは? Wallarm

簡単に言うと、RPCはプロセス間通信の手法です。リモートプロシージャコールとして展開され、知っておくべき人気のクライアントサーバ型プログラミングモデルです。

RPCの意味について疑問をお持ちですか? 簡単にご説明します。

コンピュータソフトが、あたかも通常の手続き呼び出しのように、別のアドレス空間にあるサービスや関数にアクセスする際、RPCの手法が用いられます。 

本記事は、RPC、RPC API、種類、特徴、利点、欠点について信頼性の高い情報を提供することを目的としています。では、詳しく見ていきましょう。

リモートプロシージャコールとは? Wallarm

必ず知っておくべきRPCのすべて

RPCは分散型、クライアントサーバ型のプログラム作成に有効な手法です。RPCはメソッド呼び出しやサブルーチン呼び出しと呼ばれることもあります。 

開発者がリモート通信の特性を明示しなくても、コンピュータのプログラムはあたかもローカル呼び出しかのように、別のアドレス領域で関数を実行できる仕組みです。 

実行中のソフトウェアからサブルーチンがローカルにあるかリモートにあるかにかかわらず、開発者は同じコードを記述します。さらに、RPCプロトコルを利用して、この種のクライアントサーバ通信ではメッセージ伝達を行うクライアントインターフェースが用いられます。

RPC呼び出しにおける処理は、以下の順番で実行されます。

  • クライアントがクライアントスタブを呼び出します。
  • クライアントスタブはサーバスタブ用のデータ構造を作成し、引数をメッセージに挿入して送信します。
  • クライアントのOSがメッセージをネットワーク経由で送信します。
  • サーバコンポーネントが情報またはメッセージをサーバのOSに渡します。
  • サーバコンポーネントが受信したメッセージからパラメータを抽出します。
  • その後、サーバコンポーネントが該当する処理を呼び出します。

インターフェース定義言語(IDL)は、ソフトウェアコンポーネントのAPI Security Platformを記述するための言語であり、RPCで広く利用されています。この場合、IDLは異なるOSやプログラミング言語を用いるコンピュータ同士をつなぐ役割を果たします。

RPCの特徴

RPCの基本的な特性は以下の通りです。

  • プロセス間でアドレス空間は共有されません。
  • 呼び出し元の環境に直接アクセスする権限はありません。
  • パラメータは値のみを渡します。
  • 呼び出される関数は別のプロセス上にあり、多くの場合、別のコンピュータに存在します。
  • RPCはサーバプロセスの環境内で実行されます。

リモートプロシージャコールの種類

  1. ブロードキャストRPC

この方式では、クライアントのリクエストがネットワーク全体にブロードキャストされ、そのリクエストを処理するすべてのサーバが対応します。この種のRPCには以下の特徴があります。

  • リクエストをブロードキャストするかどうかを選択できます。
  • 公開するポートを宣言できます。
  • 物理リンクの負荷軽減に寄与します。
  1. コールバックRPC

この種類のRPCは、関与する手法間でP2Pアーキテクチャを実現します。この方式は、クライアントスタブとサーバスタブの双方として機能する点が利点です。主な特徴は以下の通りです。

  • リモート操作のインタラクティブなタイムテーブル制御には、クライアントを管理するドメインコントローラが必要です。
  • 関係するプロセスが指導型アーキテクチャで動作することを促します。
  • クライアントプロセスの動作はコールバックに依存します。
  • 制御のコールバックが滞ることがあります。
  1. バッチモードRPC

複数のRPCリクエストをまとめ、一括してサーバに送信することができます。特徴は以下の通りです。

  • 呼び出し回数が少ない単独のアプリに適しています。
  • すべてのリクエストを一度にネットワーク経由で送るため、リクエスト送信に伴うコストと待ち時間を低減します。
  • 信頼性のある伝送のために、API security protocolが必要です。

RPCの利用例

  • クライアントは呼び出しを行い、サーバの応答を待たずに処理を続行します。
  • 多数の非同期クライアント呼び出しが同時に送信されるケースです。
  • RPCクライアントは複数のサーバに対してブロードキャスト方式でリクエストを送り、各サーバの応答を取得することが可能です。
  • クライアントが処理を開始し、サーバの応答を待ってから次に進むのが通常の動作モードです。
  • 非同期の呼び出し時、サーバがクライアント側のメソッドを呼び出して処理の完了を知らせます。

RPCの仕組み

RPCの動作方法は、システムやOSごとに異なる場合がありますが、基本的な流れは以下の通りです。

Step 1: クライアント側で、クライアントプロトタイプとRPC実行環境が使用されます。

Step 2: 従来のパラメータ転送手法を用いて、クライアントスタブの処理を開始します。『マーシャリング』とはパラメータを整理することを意味します。その後、クライアントスタブはローカルRPCランタイムに、データをサーバスタブへ送信し、クライアントのアドレス空間に格納するよう依頼します。

Step 3: クライアントは通常のローカルルーチンを呼び出してRPCにアクセスします。RPCインターフェースは、サーバとクライアント間でのメッセージ配信、確認、転送、検出、および再送信を管理します。

Step 4: 以上のステップが完了すると、サーバスタブはサーバプロトタイプに戻り、戻り値のパラメータをレスポンスに組み込みます。その後、サーバコンポーネントがトランスポート層に通知のためのメッセージまたはシグナルを送信します。

Step 5: クライアントのネットワーク層が情報とパラメータを受信し、通知とともにクライアントインターフェースに転送します。

Step 6: クライアントコンポーネントが結果パケット内の戻り値のフレームワークを展開すると、処理は呼び出し元に戻ります。

RPCの特徴

  • シンプルな呼び出し構文
  • 広く認識された意味論を提供
  • 明確に定義されたアーキテクチャを提供
  • 同一または別のマシン上で動作するプロセス間で相互に情報交換が可能

RPCの利点と欠点

RPCの利点は以下の通りです。

  • RPCはプロセスベースおよびスレッドベースのパラダイムをサポートします。
  • 多数のプロトコルが性能向上に寄与します。
  • RPCコードにより再開発の手間が軽減されます。
  • 分散環境において、ローカル外のプログラムも利用可能です。

欠点

  • リモートプロシージャコールとRESTを比較すると、コネクションレスな呼び出しによりコストが増加します。
  • RPCは相互作用に依存するため、ハードウェア面でのアーキテクチャの柔軟性がありません。

WallarmによるAPIプロトコルの防御

すべてのRPCエンドポイント実装は、APIとAPIプロトコルを守るための補助ライブラリを提供する必要があります。同パッケージの機能は以下を含むべきです。

  • バインディング操作
  • セキュリティ操作
  • ネームサービス操作
  • 国際化操作
  • プログラムID操作

まとめ

まとめると、RPCはプロセスやサービスが別々のOSや環境にある場合のプロセス間通信手法です。主にコールバック、ブロードキャスト、バッチ転送の3種類が用いられ、主要な構成要素はRPCランタイム、クライアントスタブ、サーバ、およびサーバスタブとなります。これでRPCについて必要な知識が網羅されたことと思います。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック