2016-02-14 31 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