2016-02-14 56 views
2

有人可以從網絡的角度描述RPC(SUN和/或DCE)是什麼以及它偏離標準TCP行爲的原因?RPC和TCP行爲

我瞭解它的方式是客戶端通過一個唯一的源端口伸出服務器,然後在TCP三次握手完成後切換源端口。我使用ASA防火牆,因此當檢查DCE RPC未啓用時,此行爲變得非常明顯,因爲防火牆會將其視爲威脅而阻止它。我已經閱讀了幾篇MS TechNet文章和其他網站定義,包括觀看了五個Youtube視頻,這些視頻似乎都是從程序員的角度來解釋它,但由於我不是程序員,所以我還沒有完全理解這個概念。

回答

1

請注意,關於RPC協議沒有任何偏離標準TCP的東西。

SunRPC或DCE RPC在UDP之上(至少SunRPC可以使用UDP)或在TCP之上工作。

通常,爲了讓RPC客戶端聯繫/調用RPC服務器,它首先聯繫某種查找服務器(在SunRPC中稱爲portmapper或rpcbind),該服務器使用位置(IP地址和端口號)實際服務器在哪裏運行。

所以從網絡角度來看:

  • RPC服務器偵聽一個隨機端口號,可每次該服務器程序是(重新)開始發生變化。
  • 在啓動時,RPC服務器連接到端口映射器,該端口映射器在衆所周知的端口上運行,並使用它監聽的IP地址和端口號註冊自己。

通常,portmapper服務與RPC服務器程序在同一臺機器上運行。

當客戶端想要連接到或調用RPC服務它執行下述動作:

  • 連接到端口映射,一個公知的/標準目的地端口上,並要求它在特定服務就是了連接到is。
  • portmapper回覆客戶端請求的服務的IP地址和端口號。
  • 客戶端斷開與portmapper的連接
  • 客戶端使用pormapper給出的IP地址和端口號建立到服務的新連接。
  • 客戶端通過此新連接調用RPC服務,客戶端可以使用該連接進行多個RPC調用。
  • 這些RPC調用只是在TCP連接上交換的應用程序消息。

(在這種情況下使用UDP,而不是TCP,它的工作原理大致相同,但有沒有自然沒有連接建立/拆除在網絡上執行)

這爲防火牆的一個問題,因爲服務器偵聽隨機選擇的端口號,不能以管理方式允許訪問特定的端口號。相反,想要支持這種設置的防火牆需要打開端口映射器端口,捕獲去往該端口映射器的RPC消息,檢查與端口映射器交換的消息內容以從該映射器中提取IP地址和端口號RPC消息(portmapper本身實現爲RPC服務器),以便動態地打開RPC服務器和客戶端之間的端口。

+0

謝謝你的出色解釋! – Keenan