RPC的 全稱 是Remote Procedure Call,即遠(yuǎn)程過程調(diào)用協(xié)議,它基于client-server通訊模型,但客戶機(jī)與服務(wù)器并非一定是不同機(jī)器,RPC常常應(yīng)用于同一機(jī)器不同進(jìn)程之間的通訊。RPC協(xié)議將發(fā)出請(qǐng)求的所有進(jìn)程視為“client”,將接收請(qǐng)求的進(jìn)程都定義為“server”,在網(wǎng)絡(luò)遠(yuǎn)程訪問外設(shè)如打印機(jī)掃描儀等時(shí)RPC扮演了重要角色。
在Windows分布共享數(shù)據(jù)的有關(guān)進(jìn)程中,經(jīng)常會(huì)用到RPC技術(shù)。在系統(tǒng)大量的工作中,如果隨意改變?cè)O(shè)置或者設(shè)置有不妥之處,就會(huì)遇到“RPC server unavailable”之類的出錯(cuò)信息。那么具體癥狀有哪些呢?
一種是由于取消了系統(tǒng)的“文件打印共享”所致。由于RPC 協(xié)議的作用之一就是支持用戶調(diào)用網(wǎng)絡(luò)連接的外設(shè),取消共享便會(huì)導(dǎo)致用戶無法實(shí)現(xiàn)打印任務(wù),只會(huì)看到RPC的錯(cuò)誤提示。另外,網(wǎng)絡(luò)連接有問題也會(huì)顯示RPC錯(cuò)誤,當(dāng)客戶端發(fā)出請(qǐng)求而網(wǎng)絡(luò)連接有問題時(shí),客戶端對(duì)服務(wù)器的請(qǐng)求也會(huì)收到錯(cuò)誤提示“RPC server unavailable”。
還有就是在名稱解析有問題時(shí)也會(huì)發(fā)生類似錯(cuò)誤,比如當(dāng)客戶端向服務(wù)器發(fā)出請(qǐng)求時(shí)采用的可能是服務(wù)器的名稱,或者IP地址或者端口號(hào),假如RPC服務(wù)器的名稱映射到了錯(cuò)誤的IP地址,那么客戶端就與服務(wù)器失聯(lián),從而發(fā)生RPC錯(cuò)誤。
圖1 在“控制面板”中對(duì)防火墻設(shè)置RPC服務(wù)
防火墻之類的安全工具經(jīng)常會(huì)攔截通過TCP端口發(fā)來的請(qǐng)求,也會(huì)導(dǎo)致RPCs出錯(cuò)提示。RPC還需要在Windows注冊(cè)表內(nèi)有相關(guān)的設(shè)置值,注冊(cè)表損壞也會(huì)導(dǎo)致 RPC服務(wù)失效。
首先應(yīng)該檢查防火墻,無論是Windows系統(tǒng)自身的防火墻,還是其他安全防御軟件都有可能阻止RPC請(qǐng)求。假如用戶安裝的是第三方防火墻,可將其配置為允許RPCs出入。假如我們不想改變防火墻設(shè)置,那么在允許的情況下暫時(shí)關(guān)閉防火墻,當(dāng)完成RPC相關(guān)任務(wù)后再將其打開。
對(duì)于默認(rèn)的Windows系統(tǒng)本身的防火墻,讓其支持RPC的具體設(shè)置方式為:打開Windows系統(tǒng)中的控制面板,點(diǎn)擊“系統(tǒng)和安全”,然后點(diǎn)擊“Windows防火墻”下的“允許應(yīng)用或功能通過Windows防火墻”(如圖1),在應(yīng)用列表窗口中勾 選“Remote Assistance Services”即可。
有時(shí)是因?yàn)榫W(wǎng)絡(luò)連接設(shè)置有問題導(dǎo)致RPC失效,尤其當(dāng)錯(cuò)誤發(fā)生在客戶端對(duì)服務(wù)器請(qǐng)求的情況下,此時(shí)不妨Ping一下。具體操作方式為:在“運(yùn)行”窗口輸入將要運(yùn)行的命令“ncpa.cpl” ,選擇“本地連接”后選擇“屬性”,在菜單列表中確認(rèn)是否列出了“Internet 協(xié)議” 以及“文件和打印機(jī)網(wǎng)絡(luò)共享”,如果沒有則需要進(jìn)行重新安裝 。
而且,支持RPC的多項(xiàng)服務(wù)需要在客戶端和服務(wù)器的后臺(tái)運(yùn)行,這些服務(wù)進(jìn)程通過運(yùn)行命令“services.msc”可以進(jìn)行查看,假如其中RPC服務(wù)沒有啟用,那么雙擊之后在屬性窗口內(nèi)選擇啟動(dòng)甚至自動(dòng)啟動(dòng)。而在注冊(cè)表內(nèi),假如由于故障損壞導(dǎo)致“RpcSs”注冊(cè)值丟失也會(huì)引起RPC異常。假如用戶對(duì)注冊(cè)表之類比較棘手,可以借助第三方專用工具如SpeedyPC和Reimage等,它們不僅可以修復(fù)注冊(cè)表,也能解決RPC錯(cuò)誤。