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
อย่างจริงจัง? ไม่มี upvotes นี่เป็นคำตอบที่ยอดเยี่ยม +1
เดฟ

6

ความจริงก็คือ: RPC ถูกนำมาใช้กันอย่างแพร่หลายในท้องถิ่นเครื่อง แต่สำหรับโฮสต์ที่จะเป็นเจ้าภาพการใช้งานส่วนใหญ่จะใช้โดย Microsoft ภายในไม่ค่อยใช้โดยบุคคลที่สาม


การใช้งานหลักในท้องถิ่น LPC:

  • ส่วนประกอบ RPC แบบ Raw เช่น Registry, Netlogon, Firewall, Service Control, SQL Server ... คุณสามารถเห็นบางส่วนในรายการในส่วน "HOST-to-HOST"

  • ส่วนประกอบ DCOM จำนวนมาก (ขึ้นอยู่กับ RPC เช่นตัวห่อ C ++ ของ C) รวมถึงส่วนประกอบ COM +

คุณสามารถเรียกใช้ dcomcnfg เพื่อดูส่วนประกอบ DCOM บนเครื่องของคุณ:

Excel, Internet Explorer, Visual Studio ... สามารถเป็นแบบอัตโนมัติได้เนื่องจากเป็นองค์ประกอบ DCOM:

ป้อนคำอธิบายรูปภาพที่นี่

แม้แต่กล่องโต้ตอบคุณสมบัติไฟล์ของ Explorer ก็เป็นองค์ประกอบ DCOM ด้วยใช่ไหม หากคุณลบ ACL ทั้งหมดออกจาก "Edit Limits" ของ Launch Permissions ของ DCOMCNFG คุณจะไม่สามารถทำอะไรได้เลยไม่เพียง แต่การจัดการเท่านั้น! แม้กระทั่งแสดงคุณสมบัติไฟล์ใน explorer!

ป้อนคำอธิบายรูปภาพที่นี่


การใช้งานหลักของHOST-to-HOST RPC:

  • สิ่งที่การจัดการระยะไกลเช่นเมื่อ "การจัดการคอมพิวเตอร์", "ตัวแก้ไขรีจิสทรี" คุณสามารถปล่อยให้มันเชื่อมต่อกับเครื่องระยะไกล! สิ่งที่เกิดขึ้นคือ RPC บนโปรโตคอล SMB (TCP พอร์ต 445 หรือที่รู้จักในชื่อ File Sharing)

    ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้เครื่องมือ 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 มาก

ในความเป็นจริง HOST-to-HOST RPC ไม่ได้แพร่กระจายอย่างกว้างขวางส่วนใหญ่เป็นเพราะซับซ้อนและทึบแสงไม่เป็นมิตรกับอินเทอร์เน็ตเนื่องจาก 445 หรือ 135 พอร์ตมักจะถูกบล็อกและประสบการณ์การตรวจสอบที่ไม่ดี คนชอบเลือกเซิร์ฟเวอร์ HTTPS เพื่อเรียกใช้องค์ประกอบระยะไกลมันตรงไปตรงมาและสามารถควบคุมได้มากกว่า


2

การเรียกขั้นตอนระยะไกล (RPC)

แหล่งที่มา: http://searchsoa.techtarget.com/definition/Remote-Procedure-Call

Remote Procedure Call (RPC) เป็นโปรโตคอลที่โปรแกรมหนึ่งสามารถใช้เพื่อขอบริการจากโปรแกรมที่อยู่ในคอมพิวเตอร์เครื่องอื่นในเครือข่ายโดยไม่ต้องเข้าใจรายละเอียดเครือข่าย (บางครั้งเรียกโพรซีเดอร์ยังเรียกอีกอย่างว่าการเรียกใช้ฟังก์ชันหรือการเรียกรูทีนย่อย) RPC ใช้โมเดลไคลเอ็นต์ / เซิร์ฟเวอร์ โปรแกรมการร้องขอเป็นไคลเอนต์และโปรแกรมการให้บริการเป็นเซิร์ฟเวอร์ เช่นเดียวกับการเรียกโพรซีเดอร์ปกติหรือโลคัล RPC เป็นการดำเนินการแบบซิงโครนัสซึ่งต้องการให้โปรแกรมที่ร้องขอถูกระงับจนกว่าผลลัพธ์ของโพรซีเดอร์แบบรีโมตจะถูกส่งคืน อย่างไรก็ตามการใช้กระบวนการหรือเธรดที่มีน้ำหนักเบาซึ่งแบ่งใช้พื้นที่แอดเดรสเดียวกันอนุญาตให้ใช้ RPC หลายตัวพร้อมกันได้

เมื่อคำสั่งของโปรแกรมที่ใช้ RPC ถูกคอมไพล์ลงในโปรแกรมที่ปฏิบัติการได้ stub จะรวมอยู่ในโค้ดที่รวบรวมซึ่งทำหน้าที่เป็นตัวแทนของรหัสโพรซีเดอร์ระยะไกล เมื่อโปรแกรมถูกเรียกใช้และมีการเรียกใช้โพรซีเดอร์ stub จะได้รับคำร้องขอและส่งต่อไปยังโปรแกรมรันไทม์ไคลเอ็นต์ในเครื่องคอมพิวเตอร์ โปรแกรมรันไทม์ไคลเอนต์มีความรู้เกี่ยวกับวิธีการระบุคอมพิวเตอร์ระยะไกลและแอพพลิเคชันเซิร์ฟเวอร์และส่งข้อความผ่านเครือข่ายที่ร้องขอขั้นตอนระยะไกล ในทำนองเดียวกันเซิร์ฟเวอร์รวมถึงโปรแกรมรันไทม์และ stub อินเตอร์เฟสนั้นด้วยโพรซีเดอร์แบบรีโมต ผลลัพธ์จะถูกส่งกลับในลักษณะเดียวกัน

มีหลายรุ่น RPC และการใช้งาน รูปแบบและการใช้งานที่ได้รับความนิยมคือสภาพแวดล้อมการคำนวณแบบกระจายของ Open Software Foundation (DCE) สถาบันวิศวกรไฟฟ้าและอิเล็กทรอนิกส์กำหนด RPC ในข้อกำหนดการเรียกขั้นตอนระยะไกล ISO, ISO / IEC CD 11578 N6561, ISO / IEC, พฤศจิกายน 1991

RPC ครอบคลุม Transport layer และ Application layer ในรูปแบบ Open Systems Interconnection (OSI) ของการสื่อสารเครือข่าย RPC ทำให้การพัฒนาแอปพลิเคชั่นง่ายขึ้นซึ่งรวมถึงหลายโปรแกรมที่กระจายอยู่ในเครือข่าย

วิธีการทางเลือกสำหรับการสื่อสารลูกค้า / เซิร์ฟเวอร์รวมถึงการจัดคิวข้อความและการสื่อสารขั้นสูง Program-to-Programme (APPC) ของ IBM


ที่นี่เพิ่มเติมจาก Microsoft: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx

วัตถุประสงค์
Microsoft Remote Procedure Call (RPC) กำหนดเทคโนโลยีที่มีประสิทธิภาพสำหรับการสร้างโปรแกรมไคลเอนต์ / เซิร์ฟเวอร์แบบกระจาย Stub รันไทม์และไลบรารี RPC จัดการกระบวนการส่วนใหญ่ที่เกี่ยวข้องกับโปรโตคอลเครือข่ายและการสื่อสาร สิ่งนี้ช่วยให้คุณมุ่งเน้นไปที่รายละเอียดของแอปพลิเคชันมากกว่ารายละเอียดของเครือข่าย สามารถใช้ RPC ที่
เกี่ยวข้อง
ได้ในทุกแอปพลิเคชันไคลเอนต์ / เซิร์ฟเวอร์ตามระบบปฏิบัติการ Windows นอกจากนี้ยังสามารถใช้เพื่อสร้างโปรแกรมไคลเอนต์และเซิร์ฟเวอร์สำหรับสภาพแวดล้อมเครือข่ายที่ต่างกันซึ่งรวมถึงระบบปฏิบัติการเช่น Unix และ Apple

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.