- Remote Procedure Call (RPC)
- Advantages of Remote Procedure Call
- Disadvantages of Remote Procedure Call
- Национальная библиотека им. Н. Э. Баумана Bauman National Library
- Персональные инструменты
- MSRPC (Microsoft Remote Procedure Call)
- Содержание
- История создания
- Использование протокола MSRPC (Microsoft Remote Procedure Call)
- Компоненты Microsoft RPC
- Принцип работы MSRPC (Microsoft Remote Procedure Call)
- Remote Procedure Call (RPC) service crashes in Windows Server 2008 or in Windows Vista
- Symptoms
- Cause
- Resolution
- Hotfix information
- Prerequisites
- Registry information
- Restart requirement
- Hotfix replacement information
- File information
Remote Procedure Call (RPC)
A remote procedure call is an interprocess communication technique that is used for client-server based applications. It is also known as a subroutine call or a function call.
A client has a request message that the RPC translates and sends to the server. This request may be a procedure or a function call to a remote server. When the server receives the request, it sends the required response back to the client. The client is blocked while the server is processing the call and only resumed execution after the server is finished.
The sequence of events in a remote procedure call are given as follows −
- The client stub is called by the client.
- The client stub makes a system call to send the message to the server and puts the parameters in the message.
- The message is sent from the client to the server by the client’s operating system.
- The message is passed to the server stub by the server operating system.
- The parameters are removed from the message by the server stub.
- Then, the server procedure is called by the server stub.
A diagram that demonstrates this is as follows −
Advantages of Remote Procedure Call
Some of the advantages of RPC are as follows −
- Remote procedure calls support process oriented and thread oriented models.
- The internal message passing mechanism of RPC is hidden from the user.
- The effort to re-write and re-develop the code is minimum in remote procedure calls.
- Remote procedure calls can be used in distributed environment as well as the local environment.
- Many of the protocol layers are omitted by RPC to improve performance.
Disadvantages of Remote Procedure Call
Some of the disadvantages of RPC are as follows −
- The remote procedure call is a concept that can be implemented in different ways. It is not a standard.
- There is no flexibility in RPC for hardware architecture. It is only interaction based.
- There is an increase in costs because of remote procedure call.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
MSRPC (Microsoft Remote Procedure Call)
Communications protocol | |
Purpose | Управление сетевыми протоколами и связью |
---|---|
Developer(s) | Microsoft |
Introduced | 2005 ; 16 years ago ( 2005 ) |
Based on | OSI |
OSI layer | transport |
MSRPC (Microsoft Remote Procedure Call)— это протокол, использующий принцип клиент-сервера.Он нужен для того, чтобы программа смогла запросить обслуживание у другой программы на удаленном компьютере, не затрагивая при этом другие программные обеспечения. MSRPC с самого начала был создан с открытым исходным кодом, но был усовершенствован, а также защищен авторским правом Microsoft. [Источник 1]
Содержание
История создания
MSRPC (Microsoft Remote Procedure Call) является производной этапа реализации Distributed Computing Environment 1.1 от Open Software Foundation, но защищен авторским правом Microsoft. Первоначально RPC был заказом Open Software Foundation для того, чтобы ввести новые стандарты для вычислительной инфраструктуры. В то время ни один из поставщиков программного обеспечения не хотел использовать сложный DCE или компоненты похожие на него. Стандарт бинарного интерфейса Microsoft в значительной степени основывался на MSRPC, добавляя новые функции. [Источник 2]
Собственная технология Microsoft, Distributed Component Object Model (DCOM), предназначена для взаимодействия программных компонентов, распределенных по нескольким компьютерам. «D» был добавлен в COM из-за широкого использования DCE / RPC. DCOM, который первоначально назывался «Network OLE», способствовал улучшению COM-интерфейса Microsoft и обеспечивал коммуникационный субстрат в рамках инфраструктуры сервера приложений Microsoft + COM. Данные протоколы устарели, и поэтому спрос возрос в пользу Microsoft.
Использование протокола MSRPC (Microsoft Remote Procedure Call)
Рисунок 1 — Процедура Microsoft Remote Procedure Call
Данный протокол использовала компания Microsoft для получения моделей серверов. К примеру, некоторые протоколы Windows Server полностью основаны на MSRPC, как и система администрирования DNS от Microsoft. Большая часть интерфейсов Microsoft Exchange Server это клиент-серверные программы MSRPC, а его MAPI стал защищенней благодаря шифрованию MAPI через набору функций MSRPC, который зашифровывал информацию на уровне MSRPC без использования протокола MAPI. [Источник 3]
Протокол MSRPC использует спецификацию распределенной вычислительной среды Microsoft или удаленного вызова процедур (DCE / RPC) для обеспечения безагентного шифрованного сбора событий. Протокол MSRPC обеспечивает более высокую частоту событий, чем стандартный протокол журнала безопасности Microsoft Windows, который использует для сбора событий порты WMI / DCOM.
Протокол MSRPC работает на 6-м и 7-м уровне модели OSI, т.е. на уровне представления и приложений. Средство тестирования MSRPC проверяет связь между устройством QRadar® и хостом Windows. Средство тестирования MSRPC является частью RPM протокола MSRPC и может быть найдено в / opt / qradar / jars после установки протокола. Действие протокола MSRPC начинается со стороны клиента, в момент когда программа вызывает локальную часть кода вместо полного кода. . Из этой части кода клиент извлекает нужные параметры из адресного пространства другого клиента и доставляет их в клиентскую библиотеку, которая после переводит параметры в стандартный формат предоставления сетевых данных на сервер. Затем часть кода клиента вызывает функции в библиотеке времени выполнения RPC-клиента для отправки запроса и параметров на сервер. Если сервер расположен удаленно, библиотека времени выполнения задает соответствующий транспортный протокол и механизм и передает RPC в сетевой стек для передачи на сервер. [Источник 4]
Ниже перечислены задачи, выполняемые в процессе разработки с использованием Microsoft RPC:
- Создание файла на языке определения интерфейсов, который определяет идентификацию интерфейса, типы данных и функциональные прототипы для удаленных процедур.
- Создание файла конфигурации приложения.
- Компиляция определения интерфейса с использованием MIDL. Компилятор MIDL генерирует файлы на языке C для стабов и заголовочные файла для клиента и сервера.
- Включение (include) заголовочных файлов, сгенерированных компилятором MIDL в программы сервера и клиента.
- Написание исходного текста программы сервера, которая вызывает функции RPC, чтобы сделать информацию связывания доступной клиенту, затем вызывает RpcServerListen для начала прослушивания клиентских запросов. Обеспечение метода остановки сервера.
- Компоновка клиента с файлом клиентского стаба и клиентской RPC-библиотекой времени выполнения.
- Компоновка сервера с файлом серверного стаба, удаленными процедурами и серверной RPC-библиотекой времени выполнения.
Компоненты Microsoft RPC
Реализация Microsoft RPC совместима со стандартом DCE консорциума OSF (Open Software Foundation) с небольшими различиями. Клиентские или серверные приложения, написанные с использованием Microsoft RPC, могут эксплуатироваться совместно с любыми DCE / RPC серверами или клиентами, чьи библиотеки времени выполнения работают над поддерживаемым протоколом.
Продукт Microsoft RPC включает следующие главные компоненты:
- компилятор MIDL;
- библиотеки времени выполнения и заголовочные файлы;
- модули транспортного интерфейса;
- провайдер сервиса имен;
- сервис подключения (Endpoint supply service).
В модели RPC, можно формально определять интерфейс к удаленным процедурам, используя язык, разработанный для этой цели. Это так называемый язык определения интерфейсов, или IDL (Interface Definition Language). Реализация Microsoft этого языка называется MIDL. После того, как был создан интерфейс, его необходимо пропустить через компилятор MIDL. Компилятор генерирует стабы (stub), которые транслируют локальные вызовы процедуры в удаленные. Стабы являются заместителями функций и в свою очередь производят вызовы функций библиотеки времени выполнения, выполняющих удаленный вызов процедур. Преимущество такого подхода в том, что сеть становится почти полностью прозрачной для распределенного приложения. В таких случаях клиентская программа как будто бы вызывает локальные процедуры; работа по превращению их в удаленные вызовы выполняется автоматически. Весь код, который транслирует данные, обращается к сети, и возвращает результаты, генерируется компилятором MIDL, и невидим для прикладной программы.
Принцип работы MSRPC (Microsoft Remote Procedure Call)
Инструментальные средства RPC позволяют пользователям вызывать процедуру, размещенную в удаленной серверной программе, как если бы она размещалась локально. Клиент и сервер имеют свои собственные адресные пространства; то есть каждый имеет собственный ресурс памяти, выделенный для размещения данных, используемых процедурой. Клиентское приложение вызывает локальную процедуру стаба вместо фактического кода, реализовывающего процедуру. Стабы компилируются и компонуются с клиентской программой.
Вместо фактического кода, реализующего удаленную процедуру, код стаба пользователя:
- выбирает требуемые параметры из адресного пространства клиента;
- транслирует параметры в стандартный сетевой формат представления данных (NDR – network data representation), что необходимо для их передачи по сети;
- вызывает функции клиентской RPC-библиотеки времени выполнения, чтобы послать запрос и параметры серверу.
Сервер выполняет следующие шаги, чтобы вызвать удаленную процедуру:
- функции серверной RPC-библиотеки времени выполения принимает запрос и вызывает процедуру серверного стаба;
- стаб сервера выбирает параметры из сетевого буфера и преобразует их из сетевого формата передачи в формат, необходимый серверу;
- стаб сервера вызывает фактическую серверную процедуру.
Удаленная процедура выполняется, возможно, генерируя выходные параметры и возвращаемое значение. Когда удаленная процедура завершается, подобная *последовательность шагов возвращает данные клиенту:
- удаленная процедура возвращает данные серверному стабу;
- стаб сервера преобразует выходные параметры в формат, требуемый для передачи по сети, и возвращает их функциям RPC-библиотеки времени выполнения;
- функции серверной RPC-библиотеки передают данные по сети на компьютер клиента.
Клиент завершает процесс, принимая данные из сети и возвращая их вызвавшей функции:
- клиентская RPC-библиотека получает возвращаемые удаленной процедурой значения и возвращает их клиентскому стабу;
- клиентский стаб преобразует данные из сетевого представления в формат, используемый компьютером клиента, записывает данные в память клиента и возвращает результат вызвавшей программе на клиенте;
- вызвавшая процедура продолжается, как после локального вызова.
Для Microsoft Windows и Microsoft Windows NT, библиотеки времени выполнения состоят из двух частей: импортируемой библиотеки, компонуемой с прикладной программой; и RPC-библиотеки времени выполнения, которая реализована как динамическая (DLL). Серверное приложение содержит вызовы функций серверной библиотеки времени выполнения, которые регистрируют интерфейс сервера и позволяют серверу принимать удаленные вызовы. Серверное приложение также содержит и сами специфические удаленные процедуры, предназначенные для вызова клиентскими приложениями. [Источник 5]
Remote Procedure Call (RPC) service crashes in Windows Server 2008 or in Windows Vista
Symptoms
On a computer that is running Windows Server 2008 or Windows Vista, the Remote Procedure Call (RPC) service crashes. When this issue occurs, the following events are logged in the System log and in the Application log:
Cause
This issue occurs because the Remote Procedure Call (RPC) service does not check whether a function parameter is NULL or not.
When the Remote Procedure Call (RPC) service accesses a NULL function parameter, the Remote Procedure Call (RPC) service crashes.
Resolution
Hotfix information
A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing the problem described in this article. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.
If the hotfix is available for download, there is a «Hotfix download available» section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.
Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft Web site:
http://support.microsoft.com/contactus/?ws=supportNote The «Hotfix download available» form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.
Prerequisites
To apply this hotfix, you must be running one of the following operating systems:
Windows Vista Service Pack 1 (SP1)
Windows Vista Service Pack 2 (SP2)
Windows Server 2008
Windows Server 2008 Service Pack 2 (SP2)
For more information about how to obtain a Windows Vista service pack, click the following article number to view the article in the Microsoft Knowledge Base:
935791 How to obtain the latest Windows Vista service pack
For more information about how to obtain a Windows Server 2008 service pack, click the following article number to view the article in the Microsoft Knowledge Base:
968849 How to obtain the latest service pack for Windows Server 2008
Registry information
To use the hotfix in this package, you do not have to make any changes to the registry.
Restart requirement
You must restart the computer after you apply this hotfix.
Hotfix replacement information
This hotfix does not replace a previously released hotfix.
File information
The global version of this hotfix installs files that have the attributes that are listed in the following tables. The dates and the times for these files are listed in Coordinated Universal Time (UTC). The dates and the times for these files on your local computer are displayed in your local time together with your current daylight saving time (DST) bias. Additionally, the dates and the times may change when you perform certain operations on the files.
Windows Vista and Windows Server 2008 file information notes
Important Windows Vista hotfixes and Windows Server 2008 hotfixes are included in the same packages. However, only «Windows Vista» is listed on the Hotfix Request page. To request the hotfix package that applies to one or both operating systems, select the hotfix that is listed under «Windows Vista» on the page. Always refer to the «Applies To» section in articles to determine the actual operating system that each hotfix applies to.
The files that apply to a specific product, SR_Level (RTM, SP n), and service branch (LDR, GDR) can be identified by examining the file version numbers as shown in the following table.