Що таке RPC і чому це так важливо?


15

З самого початку я чув, що ви ніколи і ніколи не вимикаєте службу віддаленого виклику процедур у Windows. Це призводить до жахливих речей, які раніше важко було перевернути (я вважаю, що це вже не легко зробити, але зараз це набагато простіше виправити). Однак я не маю уявлення, що це робить або чому так важливо в основному всю операційну систему.

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

Відповіді:


24

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

Сюди входять такі речі, як Active Directory, більшість консолей MMC, функціональність деяких аплетів на панелі управління, таких як Device Manager, багато речей в Адміністративних інструментах і, можливо, внутрішні компоненти Windows.

Я вважаю, що навіть коли ви звертаєтесь до консолі MMC, як і compmgmt.mscдля перегляду речей про локальну машину, це в основному RPC'ing до 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 внутрішньо, рідко використовується сторонніми сторонами .


Основне використання локального RPC:

  • Сирий компонент RPC, такий як Реєстр, Netlogon, Брандмауер, Контроль сервісу, SQL Server ... Деякі з них можна побачити у списку в розділі "HOST-to-HOST".

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

Ви можете запустити dcomcnfg, щоб побачити, скільки компонентів DCOM на вашій машині:

Excel, Internet Explorer, Visual Studio ... можуть бути автоматизовані, оскільки вони є компонентом DCOM:

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

Навіть діалогове вікно «Властивості файлу» також є компонентом DCOM, смішно? Якщо ви видалите всі ACL з "Редагування лімітів" дозволів запуску DCOMCNFG, ви не зможете зробити майже нічого, не тільки управління працює !, навіть покажете властивість файлів у провіднику!

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


Основне використання RPC від HOST до HOST :

  • Інформація про віддалене управління, наприклад, коли "Управління комп'ютером", "Редактор реєстру", ви можете дозволити йому підключитися до віддаленої машини! Підкреслюється протокол RPC над SMB (порт 44 TCP, відомий як спільний доступ до файлів).

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

Ви можете використовувати інструмент 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 до HOST не має широкого розповсюдження, головним чином через те, що вони складні та непрозорі, не зручні для Інтернету через 445 або 135 портів, які часто блокуються, а досвід аутентифікації поганий. Люди вважають за краще вибирати сервер HTTPS для виклику віддаленого компонента, він більш простий і керований.


2

Віддалений виклик процедури (RPC)

джерело: http://searchsoa.techtarget.com/definition/Remote-Procedure-Call

Віддалений виклик процедури (RPC) - це протокол, який одна програма може використовувати для запиту послуги від програми, розташованої на іншому комп'ютері в мережі, не потребуючи розуміння деталей мережі. (Виклик процедури також іноді відомий як виклик функції або виклик підпрограми.) RPC використовує модель клієнт / сервер. Програма, яка запитує, - це клієнт, а програма надання послуг - сервер. Як і звичайний або локальний виклик процедури, RPC - це синхронна операція, яка вимагає призупинення програми запиту до повернення результатів віддаленої процедури. Однак використання легких процесів або потоків, що розділяють один і той же адресний простір, дозволяє одночасно виконувати кілька RPC.

Коли програмні висловлювання, що використовують RPC, компілюються у виконувану програму, заглушка включається у складений код, який виступає представником віддаленого коду процедури. Коли програма запускається і видається виклик процедури, заглушка отримує запит і пересилає його клієнтській програмі виконання на локальному комп'ютері. Програма виконання клієнта має знання про те, як звертатися до віддаленого комп’ютера та серверної програми та надсилає повідомлення по всій мережі, яка вимагає віддаленої процедури. Аналогічно, сервер включає в себе програму виконання та заглушку, що взаємодіє з самою віддаленою процедурою. Результати повертаються аналогічно.

Існує кілька моделей та реалізацій RPC. Популярною моделлю та реалізацією є розподілене обчислювальне середовище Фонду відкритого ПЗ (DCE). Інститут інженерів електротехніки та електроніки визначає RPC у своїй специфікації ISO Remote Procedure Call, ISO / IEC CD 11578 N6561, ISO / IEC, листопад 1991 року.

RPC охоплює транспортний рівень та прикладний рівень у моделі мережевого зв’язку Open OS Interconnection (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.