Apa itu RPC dan mengapa begitu penting?

15

Sejak awal, saya pernah mendengar bahwa Anda tidak pernah menonaktifkan layanan Panggilan Prosedur Jarak Jauh di Windows. Melakukan hal itu mengarah pada hal-hal mengerikan yang dulunya sulit untuk dibatalkan (saya percaya bahwa itu tidak lagi mudah dilakukan tetapi sekarang jauh lebih mudah untuk diperbaiki). Namun, saya tidak tahu apa yang dilakukannya atau mengapa sangat penting untuk seluruh sistem operasi.

Apakah mungkin untuk meringkas tujuan dari layanan RPC dan mengapa begitu banyak layanan / aplikasi / operasi bergantung padanya untuk dijalankan?

redknightalex
sumber

Jawaban:

24

Para perancang Windows memutuskan untuk membuat banyak hal berbicara satu sama lain melalui RPC - sehingga mereka dapat berbicara secara lokal atau melalui jaringan.

Ini termasuk hal-hal seperti Active Directory, sebagian besar konsol MMC, fungsionalitas beberapa applet panel kontrol seperti Device Manager, banyak hal dalam Alat Administratif, dan mungkin komponen Windows internal.

Saya percaya bahkan ketika Anda mengakses konsol MMC, ingin compmgmt.mscmelihat hal-hal tentang mesin lokal, pada dasarnya RPC'ing ke localhost (saya bisa saja salah).

Anggap RPC sebagai sesuatu yang satu tingkat di atas TCP / IP yang digunakan sebagai kerangka kerja komunikasi jaringan tingkat rendah (dan tidak aman) oleh banyak komponen Windows. Mengapa tidak menggunakan TCP / IP secara langsung? Pada saat Windows NT direkayasa (versi awal dirilis pada tahun 1993), Anda memiliki protokol jaringan lain selain TCP / IP yang umum digunakan, seperti Netware (SPX / IPX), NetBIOS, AppleTalk (saya pikir Windows mendukungnya pada hari itu) , bisa saja salah ...) dan semacamnya. Jadi ini adalah cara agnostik jaringan untuk komponen Windows untuk dapat berbicara dengan komponen lain pada mesin lokal atau mesin jarak jauh.

LawrenceC
sumber
2
Serius? Tidak ada upvotes? Ini adalah jawaban yang bagus +1
Dave
6

Yang benar adalah: RPC banyak digunakan dalam mesin LOCAL , tetapi untuk penggunaan HOST-to-HOST , terutama digunakan oleh Microsoft secara internal, jarang digunakan oleh pihak ketiga .


Penggunaan utama RPC LOKAL :

  • Komponen RPC mentah, seperti Registry, Netlogon, Firewall, Kontrol Layanan, SQL Server ... Anda dapat melihat beberapa dari mereka dalam daftar di bagian "HOST-to-HOST".

  • banyak komponen DCOM (berdasarkan RPC, seperti bungkus C ++ dari C), termasuk komponen COM +.

Anda dapat menjalankan dcomcnfg untuk melihat berapa banyak komponen DCOM pada mesin Anda:

Excel, Internet Explorer, Visual Studio ... dapat diotomatisasi karena merupakan komponen DCOM:

masukkan deskripsi gambar di sini

Bahkan dialog File Explorer Properti juga komponen DCOM, lucu? Jika Anda menghapus semua ACL dari "Edit Batas" Izin Peluncuran DCOMCNFG, Anda tidak akan dapat melakukan hampir semua hal, tidak hanya pekerjaan manajemen !, bahkan menampilkan properti file di explorer!

masukkan deskripsi gambar di sini


Penggunaan utama HOST-to-HOST RPC:

  • Hal-hal Manajemen Jarak Jauh seperti ketika "Manajemen Komputer", "Editor Registri", Anda dapat membiarkannya terhubung ke mesin jarak jauh! Apa yang terjadi menggarisbawahi adalah protokol RPC over SMB (TCP port 445, dikenal sebagai File Sharing).

    masukkan deskripsi gambar di sini

Anda dapat menggunakan alat rpcdump atau ifids untuk membuang semua antarmuka RPC pada mesin jarak jauh, lihat hasil berikut, Anda dapat melihat banyak antarmuka manajemen sistem (Mereka tentu saja dapat digunakan secara lokal):

[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.

Mengapa RPC penting? Hanya karena setiap sistem matang membutuhkan mekanisme komunikasi lintas proses, sebuah toolset untuk menghasilkan stub / proxy, standar untuk mengemas / membongkar objek. Setiap sistem memiliki hal serupa. Anda harus tahu Android, Binder-nya sangat mirip dengan desain DCOM.

Faktanya, HOST-to-HOST RPC tidak tersebar luas, terutama karena mereka rumit dan buram, tidak ramah ke Internet karena 445 atau 135 port sering diblokir, dan pengalaman otentikasi buruk. Orang lebih suka memilih server HTTPS untuk memanggil komponen jarak jauh, lebih mudah dan terkendali.

osexp2003
sumber
2

Panggilan Prosedur Jarak Jauh (RPC)

sumber: http://searchsoa.techtarget.com/definition/Remote-Procedure-Call

Remote Procedure Call (RPC) adalah protokol yang dapat digunakan satu program untuk meminta layanan dari program yang terletak di komputer lain di jaringan tanpa harus memahami detail jaringan. (Panggilan prosedur juga kadang-kadang dikenal sebagai panggilan fungsi atau panggilan subrutin.) RPC menggunakan model klien / server. Program yang meminta adalah klien dan program penyedia layanan adalah server. Seperti panggilan prosedur biasa atau lokal, RPC adalah operasi sinkron yang mengharuskan program yang meminta ditangguhkan sampai hasil prosedur jarak jauh dikembalikan. Namun, penggunaan proses ringan atau utas yang berbagi ruang alamat yang sama memungkinkan banyak RPC untuk dilakukan secara bersamaan.

Ketika pernyataan program yang menggunakan RPC dikompilasi ke dalam program yang dapat dieksekusi, sebuah rintisan dimasukkan dalam kode terkompilasi yang bertindak sebagai perwakilan dari kode prosedur jarak jauh. Ketika program dijalankan dan panggilan prosedur dikeluarkan, rintisan menerima permintaan dan meneruskannya ke program runtime klien di komputer lokal. Program runtime klien memiliki pengetahuan tentang cara mengatasi komputer jarak jauh dan aplikasi server dan mengirimkan pesan di seluruh jaringan yang meminta prosedur jarak jauh. Demikian pula, server menyertakan program runtime dan stub antarmuka itu dengan prosedur jarak jauh itu sendiri. Hasilnya dikembalikan dengan cara yang sama.

Ada beberapa model dan implementasi RPC. Model dan implementasi yang populer adalah Lingkungan Komputasi Terdistribusi dari Open Software Foundation (DCE). Institute of Electrical and Electronics Engineers mendefinisikan RPC dalam Spesifikasi Panggilan Prosedur Jarak Jauh ISO, ISO / IEC CD 11578 N6561, ISO / IEC, November 1991.

RPC mencakup lapisan Transport dan lapisan Aplikasi dalam model komunikasi sistem Open System Interconnection (OSI). RPC membuatnya lebih mudah untuk mengembangkan aplikasi yang mencakup banyak program yang didistribusikan dalam jaringan.

Metode alternatif untuk komunikasi klien / server termasuk antrian pesan dan Komunikasi Lanjutan Program-ke-Program (APPC) IBM.


Di sini lebih banyak dari Microsoft: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

Tujuan
Panggilan Prosedur Jarak Jauh Microsoft (RPC) mendefinisikan teknologi yang kuat untuk membuat program klien / server terdistribusi. RPC run-time rintisan dan perpustakaan mengelola sebagian besar proses yang berkaitan dengan protokol jaringan dan komunikasi. Ini memungkinkan Anda untuk fokus pada perincian aplikasi daripada perincian jaringan.
Di mana
RPC yang berlaku dapat digunakan di semua aplikasi klien / server berdasarkan sistem operasi Windows. Itu juga dapat digunakan untuk membuat program klien dan server untuk lingkungan jaringan yang heterogen yang mencakup sistem operasi seperti Unix dan Apple.

Devid
sumber