RPC nedir ve neden bu kadar önemlidir?


15

Başından beri, Windows'ta Uzaktan Yordam Çağrısı hizmetini hiçbir zaman devre dışı bırakmadığınızı duydum. Bunu yapmak, eskiden devirmek zor olan korkunç şeylere yol açar (inanıyorum ki artık artık kolay değil, ancak düzeltilmesi çok daha kolay). Ancak, ne yaptığını veya temel olarak tüm işletim sisteminin neden bu kadar önemli olduğunu bilmiyorum.

RPC hizmetinin amacını özetlemek mümkün ve diğer pek çok hizmet / uygulama / işlem neden bu hizmetin yürütülmesine bağlı?

Yanıtlar:


24

Windows tasarımcıları, RPC üzerinden birçok şeyi birbirleriyle konuşmaya karar verdiler - böylece yerel olarak veya bir ağ üzerinden konuşabilsinler.

Buna Active Directory, MMC konsollarının çoğu, Aygıt Yöneticisi gibi bazı kontrol paneli uygulamalarının işlevselliği, Yönetimsel Araçlar'daki birçok şey ve muhtemelen dahili Windows bileşenleri dahildir.

Bir MMC konsoluna erişirken bile compmgmt.msc, yerel makine hakkında bir şeyler görüntülemek gibi , temelde localhost'a RPC'ing (yine de yanlış olabilir) inanıyorum.

RPC'yi, birçok Windows bileşeni tarafından düşük düzeyli (ve güvensiz) ağa bağlanabilir iletişim çerçevesi olarak kullanılan TCP / IP'nin bir düzey üstünde düşünün. Neden TCP / IP'yi doğrudan kullanmıyorsunuz? Windows NT'nin tasarlandığı sırada (1993'te piyasaya sürülen ilk sürüm), Netware (SPX / IPX), NetBIOS, AppleTalk gibi yaygın kullanımda TCP / IP'nin yanı sıra başka ağ protokolleri de vardı (Sanırım Windows bunu gün içinde destekledi , yanlış olabilir ...) vb. Bu, Windows bileşenlerinin yerel makinedeki veya uzak makinedeki diğer bileşenlerle konuşabilmesinin ağa agnostik bir yoludur.


2
Ciddi anlamda? Oyunuz yok mu? Bu harika bir cevap +1
Dave

6

Gerçek şu ki: RPC, LOCAL makinesinde yaygın olarak kullanılmaktadır , ancak HOST-HOST kullanımı için, çoğunlukla Microsoft tarafından dahili olarak kullanılır, nadiren üçüncü taraflar tarafından kullanılır .


YEREL RPC ana kullanımı:

  • Kayıt Defteri, Netlogon, Güvenlik Duvarı, Hizmet Denetimi, SQL Server gibi Raw RPC bileşeni ... Bunlardan bazılarını "HOST-HOST" bölümünde görebilirsiniz.

  • birçok DCOM bileşeni (C'nin bir C ++ sarıcısı gibi RPC tabanlı) COM + bileşenleri içerir.

Makinenizde kaç tane DCOM bileşeni olduğunu görmek için dcomcnfg komutunu çalıştırabilirsiniz:

Excel, Internet Explorer, Visual Studio ... DCOM bileşeni oldukları için otomatikleştirilebilir:

resim açıklamasını buraya girin

Kaşifin Dosya Özelliği iletişim kutusu bile DCOM bileşenidir, komik mi? Tüm ACL'leri DCOMCNFG'nin Başlatma İzinlerinin "Düzenleme Sınırları" ndan kaldırırsanız, yalnızca yönetim çalışmalarının yanı sıra neredeyse hiçbir şey yapamazsınız!

resim açıklamasını buraya girin


HOST-HOST RPC ana kullanımı:

  • "Bilgisayar Yönetimi", "Kayıt Defteri Düzenleyicisi" gibi Uzak Yönetim şeyler, uzak bir makineye bağlanmasına izin verebilirsiniz! Altı çizili olan, SMB üzerinden RPC protokolüdür (Dosya Paylaşımı olarak bilinen 445 numaralı TCP bağlantı noktası).

    resim açıklamasını buraya girin

Tüm RPC arabirimlerini uzak makineye dökmek için rpcdump veya ifids aracını kullanabilirsiniz, aşağıdaki sonuçlara bakın, birçok sistem yönetimi arabirimini görebilirsiniz (Tabii ki yerel olarak da kullanılabilirler):

[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 neden önemlidir? Her olgun sistemin bir çapraz işlem iletişim mekanizmasına, saplama / proxy oluşturmak için bir araç setine, nesneyi paketlemek / paketinden çıkarmak için bir standartya ihtiyacı olduğu için. Her sistem benzer şeylere sahiptir. Android'i bilmelisiniz, Binder DCOM'un tasarımına çok benziyor.

Aslında, HOST-HOST RPC yaygın olarak yaygın değildir, çünkü bunlar karmaşık ve opaktır, 445 veya 135 bağlantı noktasının sık sık engellenmesi nedeniyle Internet'e dost olmamaları ve kimlik doğrulama deneyimi kötüdür. İnsanlar uzak bir bileşeni çağırmak için bir HTTPS sunucusu seçmeyi tercih ediyorlar, daha basit ve kontrol edilebilir.


2

Uzaktan Yordam Çağrısı (RPC)

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

Uzaktan Yordam Çağrısı (RPC), bir programın ağ ayrıntılarını anlamak zorunda kalmadan ağdaki başka bir bilgisayarda bulunan bir programdan hizmet istemek için kullanabileceği bir protokoldür. (Bir yordam çağrısı bazen işlev çağrısı veya altyordam çağrısı olarak da bilinir.) RPC istemci / sunucu modelini kullanır. İstekte bulunan program bir istemcidir ve hizmet sağlayan program sunucudur. Normal veya yerel yordam çağrısı gibi, RPC de uzak yordamın sonuçları döndürülene kadar istekte bulunan programın askıya alınmasını gerektiren eşzamanlı bir işlemdir. Ancak, aynı adres alanını paylaşan hafif işlemlerin veya iş parçacıklarının kullanılması, aynı anda birden çok RPC'nin gerçekleştirilmesine izin verir.

RPC kullanan program deyimleri yürütülebilir bir programda derlendiğinde, derlenmiş koda uzak yordam kodunu temsil eden bir saplama eklenir. Program çalıştırıldığında ve yordam çağrısı yapıldığında, saplama isteği alır ve yerel bilgisayardaki bir istemci çalışma zamanı programına iletir. İstemci çalışma zamanı programı, uzak bilgisayar ve sunucu uygulamasının nasıl ele alınacağı bilgisine sahiptir ve uzak yordamı isteyen ağ üzerinden ileti gönderir. Benzer şekilde, sunucu bir çalışma zamanı programı ve uzak yordamın kendisi ile arayüz oluşturan saplama içerir. Sonuçlar aynı şekilde döndürülür.

Birkaç RPC modeli ve uygulaması vardır. Popüler bir model ve uygulama Açık Yazılım Vakfı'nın Dağıtılmış Bilgi İşlem Ortamıdır (DCE). Elektrik ve Elektronik Mühendisleri Enstitüsü, RPC'yi ISO Uzaktan Yordam Çağrısı Özelliği, ISO / IEC CD 11578 N6561, ISO / IEC, Kasım 1991'de tanımlamaktadır.

RPC, Ağ iletişiminin Açık Sistemler Bağlantısı (OSI) modelinde Aktarım katmanını ve Uygulama katmanını kapsar. RPC, bir ağda dağıtılan birden çok program içeren bir uygulama geliştirmeyi kolaylaştırır.

İstemci / sunucu iletişimi için alternatif yöntemler arasında ileti sıralaması ve IBM'in Gelişmiş Programdan Programa İletişimi (APPC) bulunur.


Microsoft'tan daha fazlası: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

Amaç
Microsoft Uzaktan Yordam Çağrısı (RPC), dağıtılmış istemci / sunucu programları oluşturmak için güçlü bir teknoloji tanımlar. RPC çalışma zamanı taslakları ve kitaplıkları, ağ protokolleri ve iletişim ile ilgili işlemlerin çoğunu yönetir. Bu, ağın ayrıntıları yerine uygulamanın ayrıntılarına odaklanmanızı sağlar.
Uygulanabilir yerlerde,
RPC, Windows işletim sistemlerine dayanan tüm istemci / sunucu uygulamalarında kullanılabilir. Unix ve Apple gibi işletim sistemlerini içeren heterojen ağ ortamları için istemci ve sunucu programları oluşturmak için de kullanılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.