有人可以从网络的角度描述RPC(SUN和/或DCE)是什么以及它偏离标准TCP行为的原因?RPC和TCP行为
我了解它的方式是客户端通过一个唯一的源端口伸出服务器,然后在TCP三次握手完成后切换源端口。我使用ASA防火墙,因此当检查DCE RPC未启用时,此行为变得非常明显,因为防火墙会将其视为威胁而阻止它。我已经阅读了几篇MS TechNet文章和其他网站定义,包括观看了五个Youtube视频,这些视频似乎都是从程序员的角度来解释它,但由于我不是程序员,所以我还没有完全理解这个概念。
有人可以从网络的角度描述RPC(SUN和/或DCE)是什么以及它偏离标准TCP行为的原因?RPC和TCP行为
我了解它的方式是客户端通过一个唯一的源端口伸出服务器,然后在TCP三次握手完成后切换源端口。我使用ASA防火墙,因此当检查DCE RPC未启用时,此行为变得非常明显,因为防火墙会将其视为威胁而阻止它。我已经阅读了几篇MS TechNet文章和其他网站定义,包括观看了五个Youtube视频,这些视频似乎都是从程序员的角度来解释它,但由于我不是程序员,所以我还没有完全理解这个概念。
请注意,关于RPC协议没有任何偏离标准TCP的东西。
SunRPC或DCE RPC在UDP之上(至少SunRPC可以使用UDP)或在TCP之上工作。
通常,为了让RPC客户端联系/调用RPC服务器,它首先联系某种查找服务器(在SunRPC中称为portmapper或rpcbind),该服务器使用位置(IP地址和端口号)实际服务器在哪里运行。
所以从网络角度来看:
通常,portmapper服务与RPC服务器程序在同一台机器上运行。
当客户端想要连接到或调用RPC服务它执行下述动作:
(在这种情况下使用UDP,而不是TCP,它的工作原理大致相同,但有没有自然没有连接建立/拆除在网络上执行)
这为防火墙的一个问题,因为服务器侦听随机选择的端口号,不能以管理方式允许访问特定的端口号。相反,想要支持这种设置的防火墙需要打开端口映射器端口,捕获去往该端口映射器的RPC消息,检查与端口映射器交换的消息内容以从该映射器中提取IP地址和端口号RPC消息(portmapper本身实现为RPC服务器),以便动态地打开RPC服务器和客户端之间的端口。
谢谢你的出色解释! – Keenan