Новини високих технологій
» » Віддалені процедури: виклик віддалених процедур, визначення і особливості

Віддалені процедури: виклик віддалених процедур, визначення і особливості

27-09-2017, 18:14
1 348
Багато користувачів комп'ютерних систем чули про таких поняттях, як віддалені процедури, виклик віддалених процедур або RPC. Ось тільки далеко не всі уявляють собі, що це за технології, як вони працюють і для чого потрібні. А адже багато з тих, хто відключив дану службу у Windows-системах, часто можуть отримувати і помилки, що відносяться до критичних збоїв. Про це та інше далі піде мова.

Віддалений виклик процедур: що це?

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

Однак віддалені процедури (виклик віддалених процедур), що позначаються як RPC (скорочення від англійського Remote Procedure Call), можна віднести не тільки до віддалених комп'ютерів. На локальному рівні такі технології теж застосовуються. В якості найпростішого прикладу можна навести виклик певної функції однієї програми з іншої програми за допомогою взаємодії через спеціальні бібліотеки. Крім того, абсолютно у всіх версіях Windows є така служба, а при її відключенні або відмову працездатності модифікація XP не працює взагалі.

Принцип дії

Як правило, служба «Віддалений виклик процедур RPC» для роботи в режимі клієнт-сервер вимагає наявності як мінімум двох основних компонентів: мережевого протоколу для обміну даними і мови серіалізації (перекладу якогось процесу або інформаційної структури даних в бітову послідовність).
Архітектури можуть бути абсолютно різними і відрізняються по своїм можливостям. Але для обміну даними на так званому " транспортному рівні найчастіше застосовуються протоколи UDP і TCP, рідше – HTTP.
Щоб не вдаватися в технічні аспекти, найпростішим поясненням принципу роботи таких технологій може стати наступні приклад: клієнтський процес формує запит серверу з описом обраної процедури з вказаними параметрами і відправляє його, після чого сервер виконує необхідну директиву і відправляє клієнту відповідь, який відображається на клієнтській машині. Однак сам серверний процесор знаходиться, так би мовити, в режимі очікування і активується тільки в моменти отримання клієнтських запитів. При цьому зовсім не обов'язково, щоб виконання схеми «запит-відповідь» здійснювалося негайно.

При цьому максимальний ефект продуктивності досягається при обміні відносно малими обсягами даних і невеликим часом відгуку компонентів, між якими встановлена інтерактивний зв'язок.

Віддалені процедури (виклик віддалених процедур): характерні риси та реалізації

Таким чином, можна виділити дві головні особливості названих технологій: асиметричність (ініціація виконання віддаленої процедури тільки однієї з сторін); синхронність (призупинення викликає процедури з моменту ініціації запиту і поновлення після відправки відповіді). Що ж стосується реалізацій, віддалені процедури (виклик віддалених процедур) сьогодні використовують декілька базових технологій, серед яких найбільш широко застосовуються наступні: DCE/RPC – бінарний протокол на основі TCP/IP, SMB/SIFC і т. д.; DCOM – об'єктно-орієнтоване додаток з можливістю передачі посилань на об'єкти і викликом методів їх обробки; JSON-RPC – текстовий протокол HTTP; .NET Remoting – бінарний протокол на основі UDP, HTTP і TCP; JAVA RMI; SOAP; XML-RPC; SUN RPC; ZeroC ICE; Routix.RPC та ін.

Проблеми і завдання

Тепер кілька слів про недоліки. Найголовніша проблема, а відповідно, і завдання реалізації, полягає в тому, що одна і та ж операція віддаленого виклику процедури через вузол служби «Віддалений виклик процедур» повинна одночасно виконуватися на різних машинах, причому часто з різними операційними системами, адресними просторами і архітектурою. В процесі дані параметрів повинні копіюватися з одного терміналу на інший. Для цього використовується не тільки транспортний протокол, але і серіалізація, що дозволяє перетворити в байтовую послідовність різні типи даних. Другий момент пов'язаний з тим, що віддалені процедури (виклик віддалених процедур) використовують не один процес, як на локальному рівні, а два (на клієнтській машині і на сервері). Тому аварійне завершення програми на одному з терміналів може викликати таку ж реакцію і на іншому.
Нарешті, однією з основних називається проблема сумісності з огляду на неоднорідність деяких мов програмування, незважаючи навіть на встановлені єдині стандарти.

Основні типи підсистем

Віддалений виклик процедур Windows 10 або будь-якої іншої системи рангом нижче передбачає використання спеціальних підсистем: транспортна підсистема, призначена для управління вихідними та вхідними з'єднаннями з гарантованою доставкою пакетів даних; пул-протоколів – концепція виконання процедури на викликається терміналі; серіалізація (маршалинг) – перетворення потоків даних в стандартні байтові коди, незалежні від архітектури; шифрування відправлених і прийнятих пакетів з накладенням на них цифрового підпису; система автентифікації та авторизації.

Які типи програм вимагають виконання RPC?

Якщо ж говорити про те, які програмні модулі операційних систем вимагають тримати службу RPC включеною, всіх їх перерахувати просто неможливо.
Віддалені процедури: виклик віддалених процедур, визначення і особливості
Але серед всіх відомих компонентів Windows-систем можна відзначити службу факсів, служби криптографії, реєстрацію помилок, довідку та підтримку, доступ до пристроїв HID, службу повідомлень (Messenger), адміністрування дисків і логічних розділів, управління змінними накопичувачами, аудіосистему, інсталятор Windows і ще бозна-що.

Думається, цього списку достатньо, щоб зрозуміти, наскільки багато компонентів системи, так і сам користувач, залежні від цієї служби.

На що впливає RPC

Взагалі, виходячи з попереднього опису, можна оцінити вплив RPC. Так, наприклад, відомо чимало випадків, коли при відключення цієї служби повністю пропадав звук, виявлялося неможливим відновлення системи після критичних збоїв або ініційована користувачем, «злітали» налаштування бездротової мережі. Але найсумніше полягає в тому, що, якщо вимкнути віддалений виклик процедур RPC, іноді буває неможливо навіть отримати доступ до основних налаштувань системи, будь користувач хоч тричі адміністратором на власному терміналі.

Можна відключити цю службу

За великим рахунком, багато хто намагався (і намагається) службу «Віддалений виклик процедур» відключити. Робити це категорично забороняється. Загалом-то, і сама система при здійсненні такої спроби зробити цього не дасть, видавши відповідне повідомлення.
Але не всі знають, що в розділі служби (services.msc) є ще така штука, як «Локатор віддаленого виклику процедур (RPC». Ось його-то якраз і можна відключити безболісно для системи. Додатки, які можуть його використовувати у своїй роботі, самостійно викличуть сервіс при необхідності.

Усунення збоїв і помилок

Нарешті, подивимося, що можна зробити, якщо видається помилка при віддаленому виклику процедури. В найпростішому випадку можна спробувати включити службу заново (якщо, звичайно, вийде).
Для цього у відповідному розділі, де знаходиться шукана служба, подвійним кліком викликається меню редагування параметрів натискається кнопка включення, а сам тип включення встановлюється на автоматичний. Якщо виконати таку процедуру при стандартній завантаженні системи не представляється можливим, можна спробувати зробити аналогічні дії в безпечному режимі. Деякі фахівці радять заодно на час проведення дій на всяк випадок відключити антивірусне ПЗ.
Якщо це не допоможе, але під рукою є установчий або відновлювальний диск системи, можна запустити командну консоль з правами адміністратора (завантаження з диска не потрібно) і прописати в ній такі команди: cd z:i386 (Z – літера оптичного приводу) ; expand explorer.ex_ %TEMP%explorer.exe; expand svchost.ex_ %TEMP%svchost.exe. Після цього запускаємо «Диспетчер завдань» (Ctrl + Del + Alt або taskmgr в меню «Виконати») і завершуємо процес Explorer.exe. Далі в командному консолі прописуємо наступне: copy %TEMP%explorer.exe %SYSTEMROOT% /y. В «Диспетчері» зупиняємо всі процеси svhost.exe, після чого протягом 60 секунд потрібно встигнути командою рядку ввести рядок copy %TEMP%svchost.exe %systemroot%system32 /y. Нарешті, якщо є доступ до редактора системного реєстру (regedit) відновлений, потрібно пройти по гілці HKCC через розділи SYSTEM CurrentControlSet і дістатися до параметра CSConfigFlags, змінивши його значення на нуль. Це далеко не всі методи виправлення помилок, пов'язаних з RPC. Справа в тому, що, якщо ця служба спричинила за собою порушення в роботі інших сервісів, можливо, спочатку доведеться усувати проблеми з їх працездатністю, а тільки потім робити якісь дії щодо RPC. І не завжди до вищеописаних параметрів і налаштувань можна отримати повний доступ. Якщо вже зовсім нічого не вийде, як це не сумно звучить, доведеться повністю перевстановлювати операційну систему, хоча хочеться сподіватися, що до цього справа не дійде.

Висновок

Ось коротко і все, що стосується технології та служби RPC. Насправді все це виглядає набагато складніше, ніж було представлено в даному описі, і для повного розуміння питання необхідно володіти хоча б початковими знаннями. Але для того, щоб мати про RPC загальне уявлення, цього поки що досить. Що ж стосується відключення, не здумайте займатися подібними речами, інакше вся система відмовить. Наведені рішення щодо виправлення збоїв зазвичай допомагають, але повної гарантії все одно дати не можна, адже деактивація служби могла викликати збої і в інших компонентах.
Цікаво по темі
Стандартні процедури та функції в Паскалі
Стандартні процедури та функції в Паскалі
Зараз практично кожна велика IT-компанія в змозі розробити власну мову програмування, на якому буде писати свої рішення і продукти. Насправді багато
Не можу зайти в "Плей Маркет". Можливі помилки та їх усунення
Не можу зайти в "Плей Маркет". Можливі помилки та їх усунення
При роботі з сервісом «Плей Маркет» нерідко виникають збої. При цьому з'являється повідомлення про ...
Служба hiberfil.sys: як видалити або відключити системний процес
Служба hiberfil.sys: як видалити або відключити системний процес
Починаючи з версії Windows XP, в системі з'явилися цікаві функції, які передбачають перехід в режим очікування, коли юзер не використовує роботу в
Як запустити «Провідник» і перезапустити службу Explorer.exe при збоях: кілька основних методів
Як запустити «Провідник» і перезапустити службу Explorer.exe при збоях: кілька основних методів
Програма Windows, звана «Провідником», являє собою самий звичайний файловий менеджер, правда, з досить цікавими можливостями, про яких мало хто знає