RPC là gì và tại sao nó lại quan trọng như vậy?


15

Ngay từ đầu, tôi đã nghe nói rằng bạn chưa bao giờ, vô hiệu hóa dịch vụ Cuộc gọi thủ tục từ xa trong Windows. Làm như vậy dẫn đến những điều khủng khiếp từng khó đảo lộn (tôi tin rằng nó không còn dễ thực hiện nữa nhưng giờ đã dễ sửa chữa hơn nhiều). Tuy nhiên, tôi không biết nó làm gì hoặc tại sao nó lại quan trọng đối với toàn bộ hệ điều hành.

Có thể tóm tắt mục đích của dịch vụ RPC không và tại sao rất nhiều dịch vụ / ứng dụng / hoạt động khác phụ thuộc vào nó để chạy?

Câu trả lời:


24

Các nhà thiết kế của Windows đã quyết định làm cho nhiều thứ nói chuyện với nhau qua RPC - để họ có thể nói chuyện cục bộ hoặc qua mạng.

Điều này bao gồm những thứ như Active Directory, hầu hết các bảng điều khiển MMC, chức năng của một số applet bảng điều khiển như Device Manager, nhiều thứ trong Công cụ quản trị và có thể cả các thành phần Windows bên trong.

Tôi tin ngay cả khi bạn đang truy cập bảng điều khiển MMC, muốn compmgmt.mscxem mọi thứ về máy cục bộ, về cơ bản, đó là RPC'ing vào localhost (mặc dù tôi có thể sai).

Hãy nghĩ về RPC như một thứ gì đó cao hơn TCP / IP được sử dụng như một khung giao tiếp có thể kết nối mạng cấp thấp (và không an toàn) bởi nhiều thành phần Windows. Tại sao không sử dụng TCP / IP trực tiếp? Tại thời điểm Windows NT được thiết kế (phiên bản ban đầu được phát hành vào năm 1993), bạn có các giao thức mạng khác ngoài TCP / IP được sử dụng phổ biến, chẳng hạn như Netware (SPX / IPX), NetBIOS, AppleTalk (Tôi nghĩ rằng Windows đã hỗ trợ điều này vào ngày trước , có thể sai ...) và như vậy. Vì vậy, đây là một cách không thể tin được về mạng để các thành phần Windows có thể nói chuyện với các thành phần khác trên máy cục bộ hoặc máy từ xa.


2
Nghiêm túc? Không có upvote? Đây là một câu trả lời tuyệt vời +1
Dave

6

Sự thật là: RPC được sử dụng rộng rãi trong máy LOCAL , nhưng đối với việc sử dụng HOST-to-HOST , chủ yếu được sử dụng bởi Microsoft trong nội bộ, hiếm khi được sử dụng bởi bên thứ ba .


Sử dụng chính RPC ĐỊA PHƯƠNG :

  • Thành phần RPC thô, chẳng hạn như Registry, Netlogon, Tường lửa, Điều khiển dịch vụ, Máy chủ SQL ... Bạn có thể thấy một số trong số chúng trong danh sách trong phần "HOST-to-HOST".

  • nhiều thành phần DCOM (dựa trên RPC, như trình bao bọc C ++ của C), bao gồm các thành phần COM +.

Bạn có thể chạy dcomcnfg để xem có bao nhiêu thành phần DCOM trên máy của bạn:

Excel, Internet Explorer, Visual Studio ... có thể được tự động hóa vì chúng là thành phần DCOM:

nhập mô tả hình ảnh ở đây

Ngay cả hộp thoại Thuộc tính tệp của Explorer cũng là thành phần DCOM, buồn cười? Nếu bạn xóa tất cả các ACL khỏi "Chỉnh sửa giới hạn" của Quyền khởi chạy của DCOMCNFG, bạn sẽ không thể làm hầu hết mọi thứ, không chỉ quản lý công việc!, Thậm chí hiển thị thuộc tính tệp trong trình thám hiểm!

nhập mô tả hình ảnh ở đây


Cách sử dụng chính HOST-to-HOST RPC:

  • Công cụ quản lý từ xa như khi "Quản lý máy tính", "Trình chỉnh sửa sổ đăng ký", bạn có thể cho phép kết nối với máy từ xa! Điều xảy ra gạch chân là RPC qua giao thức SMB (cổng TCP 445, được gọi là Chia sẻ tệp).

    nhập mô tả hình ảnh ở đây

Bạn có thể sử dụng công cụ rpcdump hoặc ifids để kết xuất tất cả các giao diện RPC trên máy từ xa, xem kết quả sau, bạn có thể thấy nhiều giao diện quản lý hệ thống (Tất nhiên chúng cũng có thể được sử dụng cục bộ):

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

Tại sao RPC quan trọng? Chỉ vì mọi hệ thống trưởng thành đều cần một cơ chế giao tiếp xuyên quá trình, một bộ công cụ để tạo stub / proxy, một tiêu chuẩn để đóng gói / giải nén đối tượng. Mọi hệ thống đều có những thứ tương tự nhau. Bạn phải biết Android, Binder của nó rất giống với thiết kế của DCOM.

Trên thực tế, RPC HOST-to-HOST không được phổ biến rộng rãi, chủ yếu vì chúng phức tạp và mờ đục, không thân thiện với Internet do các cổng 445 hoặc 135 thường bị chặn và trải nghiệm xác thực rất tệ. Mọi người thích chọn máy chủ HTTPS để gọi một thành phần từ xa, nó đơn giản và dễ kiểm soát hơn.


2

Cuộc gọi thủ tục từ xa (RPC)

nguồn: http://searchsoa.techtarget.com/defTHER/Remote-Procedure-Call

Cuộc gọi thủ tục từ xa (RPC) là một giao thức mà một chương trình có thể sử dụng để yêu cầu dịch vụ từ một chương trình nằm trong một máy tính khác trong mạng mà không cần phải hiểu chi tiết về mạng. (Cuộc gọi thủ tục đôi khi còn được gọi là cuộc gọi chức năng hoặc cuộc gọi chương trình con.) RPC sử dụng mô hình máy khách / máy chủ. Chương trình yêu cầu là máy khách và chương trình cung cấp dịch vụ là máy chủ. Giống như một cuộc gọi thủ tục thông thường hoặc cục bộ, RPC là một hoạt động đồng bộ yêu cầu chương trình yêu cầu bị đình chỉ cho đến khi kết quả của thủ tục từ xa được trả về. Tuy nhiên, việc sử dụng các quy trình hoặc chủ đề nhẹ có chung không gian địa chỉ cho phép nhiều RPC được thực hiện đồng thời.

Khi các câu lệnh chương trình sử dụng RPC được biên dịch thành một chương trình thực thi, một sơ khai được bao gồm trong mã được biên dịch đóng vai trò đại diện cho mã thủ tục từ xa. Khi chương trình được chạy và lệnh gọi thủ tục được phát ra, sơ khai sẽ nhận được yêu cầu và chuyển tiếp nó đến chương trình thời gian chạy của máy khách trong máy tính cục bộ. Chương trình thời gian chạy máy khách có kiến ​​thức về cách xử lý ứng dụng máy tính và máy chủ từ xa và gửi tin nhắn qua mạng yêu cầu thủ tục từ xa. Tương tự, máy chủ bao gồm một chương trình thời gian chạy và sơ khai giao diện đó với chính thủ tục từ xa. Kết quả được trả về cùng một cách.

Có một số mô hình RPC và triển khai. Một mô hình phổ biến và triển khai là Môi trường điện toán phân tán (DCE) của Tổ chức phần mềm mở. Viện Kỹ sư Điện và Điện tử định nghĩa RPC trong Đặc tả cuộc gọi Thủ tục từ xa ISO, ISO / IEC CD 11578 N6561, ISO / IEC, tháng 11 năm 1991.

RPC mở rộng tầng Giao vận và lớp Ứng dụng trong mô hình Giao tiếp mạng (OSI) của giao tiếp mạng. RPC giúp phát triển ứng dụng bao gồm nhiều chương trình được phân phối trong mạng dễ dàng hơn.

Các phương pháp thay thế cho giao tiếp máy khách / máy chủ bao gồm xếp hàng tin nhắn và Giao tiếp chương trình nâng cao theo chương trình (APPC) của IBM.


Tại đây thêm từ Microsoft: http://msdn.microsoft.com/en-us/l Library / windows / desktop / aa378651 (v = vs85) .aspx

Mục đích
Cuộc gọi thủ tục từ xa của Microsoft (RPC) xác định một công nghệ mạnh mẽ để tạo các chương trình máy khách / máy chủ phân tán. Các cuống và thư viện thời gian chạy RPC quản lý hầu hết các quy trình liên quan đến giao thức và giao tiếp mạng. Điều này cho phép bạn tập trung vào các chi tiết của ứng dụng hơn là các chi tiết của mạng.
Trường hợp
RPC áp dụng có thể được sử dụng trong tất cả các ứng dụng khách / máy chủ dựa trên hệ điều hành Windows. Nó cũng có thể được sử dụng để tạo các chương trình máy khách và máy chủ cho các môi trường mạng không đồng nhất bao gồm các hệ điều hành như Unix và Apple.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.