Что такое RPC и почему это так важно?


15

С самого начала я слышал, что вы никогда не отключаете службу удаленного вызова процедур в Windows. Это приводит к ужасным вещам, которые раньше было трудно перевернуть (я считаю, что это уже не легко сделать, но теперь гораздо легче исправить). Тем не менее, я понятия не имею, что он делает или почему это так важно для всей операционной системы.

Можно ли подытожить назначение службы RPC и почему так много других служб / приложений / операций зависит от ее запуска?

Ответы:


24

Дизайнеры Windows решили заставить многие вещи общаться друг с другом через RPC, чтобы они могли общаться либо локально, либо по сети.

Это включает в себя такие вещи, как Active Directory, большинство консолей MMC, функциональность некоторых апплетов панели управления, таких как диспетчер устройств, многие вещи в инструментах администрирования и, возможно, внутренние компоненты Windows.

Я верю, что даже когда вы обращаетесь к консоли MMC, например, compmgmt.mscдля просмотра информации о локальной машине, это в основном RPC для localhost (хотя я могу ошибаться).

Считайте RPC чем-то на один уровень выше TCP / IP, который используется как низкоуровневая (и небезопасная) сетевая коммуникационная структура многими компонентами Windows. Почему бы не использовать TCP / IP напрямую? Во время разработки Windows NT (первоначальная версия была выпущена в 1993 году) у вас были другие сетевые протоколы, помимо TCP / IP, которые обычно используются, такие как Netware (SPX / IPX), NetBIOS, AppleTalk (я думаю, что Windows поддерживала это в свое время может ошибаться ...) и тому подобное. Так что это независимый от сети способ для компонентов Windows иметь возможность общаться с другими компонентами на локальном или удаленном компьютере.


2
Шутки в сторону? Нет голосов? Это отличный ответ +1
Дейв

6

Правда в том, что RPC широко используется в LOCAL- машине, но для использования HOST-HOST , в основном используется Microsoft для внутренних целей , редко используется сторонними разработчиками .


LOCAL RPC основное использование:

  • Необработанный компонент RPC, такой как Реестр, Netlogon, Брандмауэр, Управление службами, SQL Server ... Некоторые из них вы можете увидеть в списке в разделе «HOST-to-HOST».

  • многие компоненты DCOM (основанные на RPC, как оболочка C ++ из C) включают компоненты COM +.

Вы можете запустить dcomcnfg, чтобы увидеть, сколько компонентов DCOM на вашем компьютере:

Excel, Internet Explorer, Visual Studio ... могут быть автоматизированы, потому что они являются компонентом DCOM:

введите описание изображения здесь

Даже диалог Свойства файла в Проводнике также является компонентом DCOM, смешно? Если вы удалите все списки ACL из «Правки редактирования» в разрешениях запуска DCOMCNFG, вы не сможете делать почти ничего, кроме работы управления !, даже показывать свойство файла в проводнике!

введите описание изображения здесь


Основное использование HOST-to-HOST RPC:

  • Такие вещи, как «Управление компьютером», «Редактор реестра», позволяют подключать его к удаленной машине! Подчеркивание происходит по протоколу RPC через 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, его Binder очень похож на дизайн DCOM.

На самом деле RPC HOST-to-HOST не получили широкого распространения, главным образом потому, что они сложны и непрозрачны, не дружат с Интернетом из-за часто блокируемых 445 или 135 портов и плохой аутентификации. Люди предпочитают выбирать HTTPS-сервер для вызова удаленного компонента, он более простой и управляемый.


2

Удаленный вызов процедур (RPC)

источник: http://searchsoa.techtarget.com/definition/Remote-Procedure-Call

Удаленный вызов процедур (RPC) - это протокол, который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости понимать детали сети. (Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы.) RPC использует модель клиент / сервер. Запрашивающая программа является клиентом, а программа, предоставляющая услуги, является сервером. Как и обычный или локальный вызов процедуры, RPC является синхронной операцией, требующей приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно адресное пространство, позволяет одновременно выполнять несколько RPC.

Когда операторы программы, использующие RPC, скомпилированы в исполняемую программу, в скомпилированный код включается заглушка, которая действует как представитель кода удаленной процедуры. Когда программа запускается и вызывается вызов процедуры, заглушка получает запрос и пересылает его клиентской исполняющей программе на локальном компьютере. Клиентская исполняющая программа знает, как обращаться к удаленному компьютеру и приложению сервера, и отправляет сообщение по сети, которое запрашивает удаленную процедуру. Точно так же сервер включает в себя исполняемую программу и заглушку, которые взаимодействуют с самой удаленной процедурой. Результаты возвращаются одинаково.

Существует несколько моделей и реализаций RPC. Популярной моделью и реализацией является Распределенная вычислительная среда (DCE) Open Software Foundation. Институт инженеров по электротехнике и электронике определяет RPC в своей спецификации удаленного вызова процедур ISO, CD / ISO 11578 N6561, ISO / IEC, ноябрь 1991 г.

RPC охватывает транспортный уровень и прикладной уровень в модели сетевого взаимодействия открытых систем (OSI). RPC облегчает разработку приложения, которое включает в себя несколько программ, распределенных в сети.

Альтернативные методы связи между клиентом и сервером включают в себя создание очереди сообщений и расширенное межпрограммное взаимодействие IBM (APPC).


Здесь больше от Microsoft: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

Назначение
Удаленный вызов процедур Microsoft (RPC) определяет мощную технологию для создания распределенных клиент-серверных программ. Заглушки и библиотеки времени выполнения RPC управляют большинством процессов, связанных с сетевыми протоколами и связью. Это позволяет вам сосредоточиться на деталях приложения, а не на деталях сети.
Где применимо,
RPC может использоваться во всех клиент-серверных приложениях на основе операционных систем Windows. Его также можно использовать для создания клиентских и серверных программ для разнородных сетевых сред, в которые входят такие операционные системы, как Unix и Apple.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.