RPCとは何ですか。なぜそれが重要なのですか


15

最初から、Windowsでリモートプロシージャコールサービスを無効にすることは決してないと聞いたことがあります。これを行うと、ひっくり返すのが困難だった恐ろしいことにつながります(これはもはや簡単ではないが、今では修正がはるかに簡単になっていると思います)。しかし、基本的にオペレーティングシステム全体にとってそれが何をするのか、なぜそれほど重要なのかはわかりません。

RPCサービスの目的を要約することは可能ですか?また、他の多くのサービス/アプリケーション/操作がRPCサービスの実行に依存しているのはなぜですか?

回答:


24

Windowsの設計者は、RPCを介して多くのことを互いに話し合うことを決定しました。これにより、ローカルまたはネットワークを介して通信できます。

これには、Active Directory、ほとんどのMMCコンソール、デバイスマネージャーなどの一部のコントロールパネルアプレットの機能、管理ツールの多くの機能、場合によっては内部Windowsコンポーネントなどが含まれます。

MMCコンソールにアクセスしている場合でもcompmgmt.msc、ローカルマシンに関する情報を表示したい場合でも、基本的にはlocalhostへのRPC処理です(間違っている可能性があります)。

RPCは、TCP / IPの1レベル上にあり、多くのWindowsコンポーネントで低レベル(および安全でない)ネットワーク通信フレームワークとして使用されているものと考えてください。TCP / IPを直接使用しないのはなぜですか?Windows NTが設計された時点(1993年にリリースされた初期バージョン)には、Netware(SPX / IPX)、NetBIOS、AppleTalkなど、一般的に使用されているTCP / IP以外のネットワークプロトコルがありました。 、間違っている可能性があります...)など。したがって、これは、Windowsコンポーネントがローカルマシンまたはリモートマシン上の他のコンポーネントと通信できるようにする、ネットワークに依存しない方法です。


2
マジ?賛成票はありませんか?これは素晴らしい答えです+1
デイブ

6

真実は次のとおりです。RPCはLOCALマシンで広く使用されていますが、ホスト間での使用のために、主にMicrosoftによって内部的に使用され、サードパーティによって使用されることはほとんどありません


ローカル RPCの主な使用法:

  • レジストリ、Netlogon、ファイアウォール、サービスコントロール、SQL Serverなどの未加工のRPCコンポーネント...それらの一部は、「ホスト間」セクションのリストで確認できます。

  • 多くのDCOMコンポーネント(CのC ++ラッパーのようなRPCベース)には、COM +コンポーネントが含まれています。

dcomcnfgを実行して、マシン上のDCOMコンポーネントの数を確認できます。

Excel、Internet Explorer、Visual Studio ...は、DCOMコンポーネントであるため自動化できます。

ここに画像の説明を入力してください

エクスプローラーの[ファイルプロパティ]ダイアログもDCOMコンポーネントです。DCOMCNFGの起動許可の「制限の編集」からすべてのACLを削除すると、管理機能だけでなく、エクスプローラーでファイルプロパティを表示することもできなくなります。

ここに画像の説明を入力してください


ホスト間の RPCの主な使用法:

  • 「コンピューター管理」、「レジストリエディター」などのリモート管理機能を使用すると、リモートマシンに接続できます。下線は、RPC over SMBプロトコル(TCPポート445、ファイル共有として知られています)です。

    ここに画像の説明を入力してください

rpcdumpまたはifidsツールを使用して、リモートマシン上のすべてのRPCインターフェイスをダンプできます。次の結果を参照してください。多くのシステム管理インターフェイスを見ることができます(もちろんローカルでも使用できます)。

[MS-RSP]: Remote Shutdown Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-TSCH]: Task Scheduler Service Remoting Protocol 
[MS-EVEN6]: EventLog Remoting Protocol 
Adh APIs
AppInfo
Base Firewall Engine API
DHCP Client LRPC Endpoint
DHCPv6 Client LRPC Endpoint
DfsDs service
EFSK RPC Interface
Event log TCPIP
Fw APIs
Group Policy RPC Interface
IP Transition Configuration endpoint
IdSegSrv service
Impl friendly name
KeyIso
LicenseManager
NRP server endpoint
NSI server endpoint
NetSetup API
Ngc Pop Key Service
Proxy Manager client server endpoint
Proxy Manager provider server endpoint
Secure Desktop LRPC interface
Security Center
UserMgrCli
WM_WindowManagerRPC\Server
WinHttp Auto-Proxy Service
Witness Client Test Interface
Witness Client Upcall Server
XactSrv service
...

Received 499 endpoints.

RPCが重要な理由 すべての成熟したシステムには、プロセス間通信メカニズム、オブジェクトをパック/アンパックするための標準であるスタブ/プロキシを生成するツールセットが必要だからです。どのシステムにも似たようなものがあります。Androidを知っている必要があります、そのバインダーはDCOMのデザインに非常に似ています。

実際、ホスト間RPCは広く普及していません。主に、それらが複雑で不透明であり、445または135ポートがブロックされることが多いためインターネットに友好的ではなく、認証エクスペリエンスが悪いためです。人々はリモートコンポーネントを呼び出すためにHTTPSサーバーを選択することを好みます。それはより簡単で制御可能です。


2

リモートプロシージャコール(RPC)

ソース:http : //searchsoa.techtarget.com/definition/Remote-Procedure-Call

リモートプロシージャコール(RPC)は、ネットワークの詳細を理解しなくても、あるプログラムがネットワーク内の別のコンピューターにあるプログラムにサービスを要求するために使用できるプロトコルです。(プロシージャ呼び出しは、関数呼び出しまたはサブルーチン呼び出しとも呼ばれます。)RPCはクライアント/サーバーモデルを使用します。要求プログラムはクライアントであり、サービス提供プログラムはサーバーです。通常のプロシージャまたはローカルプロシージャコールと同様に、RPCは同期操作であり、リモートプロシージャの結果が返されるまで、要求元のプログラムを中断する必要があります。ただし、同じアドレス空間を共有する軽量プロセスまたはスレッドを使用すると、複数のRPCを同時に実行できます。

RPCを使用するプログラムステートメントが実行可能プログラムにコンパイルされると、リモートプロシージャコードの代表として機能するスタブがコンパイル済みコードに含まれます。プログラムが実行され、プロシージャコールが発行されると、スタブは要求を受信し、ローカルコンピューターのクライアントランタイムプログラムに転送します。クライアントランタイムプログラムは、リモートコンピューターとサーバーアプリケーションのアドレス指定方法を認識しており、リモートプロシージャを要求するメッセージをネットワーク経由で送信します。同様に、サーバーには、リモートプロシージャ自体と連動するランタイムプログラムとスタブが含まれています。結果は同じ方法で返されます。

いくつかのRPCモデルと実装があります。人気のあるモデルと実装は、Open Software Foundationの分散コンピューティング環境(DCE)です。Institute of Electrical and Electronics Engineersは、ISOリモートプロシージャコール仕様、ISO / IEC CD 11578 N6561、ISO / IEC、1991年11月にRPCを定義しています。

RPCは、ネットワーク通信のOpen Systems Interconnection(OSI)モデルのトランスポート層とアプリケーション層にまたがっています。RPCを使用すると、ネットワークに分散された複数のプログラムを含むアプリケーションを簡単に開発できます。

クライアント/サーバー通信の代替方法には、メッセージキューイングとIBMの拡張プログラム間通信(APPC)が含まれます。


Microsoftの詳細:http : //msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

目的
Microsoftリモートプロシージャコール(RPC)は、分散クライアント/サーバープログラムを作成するための強力なテクノロジを定義します。RPCランタイムスタブとライブラリは、ネットワークプロトコルと通信に関連するほとんどのプロセスを管理します。これにより、ネットワークの詳細ではなく、アプリケーションの詳細に集中できます。
該当する場合
、Windowsオペレーティングシステムに基づくすべてのクライアント/サーバーアプリケーションでRPCを使用できます。また、UnixやAppleなどのオペレーティングシステムを含む異種ネットワーク環境用のクライアントおよびサーバープログラムを作成するためにも使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.