跳到主要内容

问:ncacn_ip_tcp 和 ncalrpc 有什么区别

ncacn_ip_tcpncalrpc
含义Network Computing Architecture Connection-oriented over IP/TCPNetwork Computing Architecture Local Remote Procedure Call
通俗理解基于 TCP/IP 的远程RPC通信协议基于本机的本地RPC通信协议(不走网络)
用途用来让不同机器之间的RPC程序通信(比如客户端访问远程服务器)用来让同一台机器上的不同进程进行RPC调用(无需网络堆栈)
地址格式ncacn_ip_tcp:<服务器IP或主机名>[端口]ncalrpc:[端点名称]
依赖必须有网络连接,TCP/IP协议栈只需要本地RPC,速度更快
示例ncacn_ip_tcp:192.168.1.100[135]ncalrpc:MyServiceEndpoint

更简单一层理解:

  • ncacn_ip_tcp跨机器用TCP做传输。
  • ncalrpc本地机内直接走内存或本地调度器,不走网络。

小细节补充

  • ncalrpc非常快,因为它绕过了TCP/IP协议栈,直接在内核或本地RPC子系统中调度。
  • ncacn_ip_tcp常用于像远程桌面服务(RDP)ExchangeActive Directory等场景,需要跨服务器通信。
  • Windows上,端口135通常用于RPC端口映射(RPC Endpoint Mapper),它会告诉客户端:“你要访问的那个服务真实监听在哪个TCP端口”。

🎯 一个简单的例子 比如你的电脑上有个服务叫 FileService,它支持RPC:

  • 如果本机进程访问它,走 ncalrpc:FileService
  • 如果远程机器访问它,走 ncacn_ip_tcp:你的IP[服务端口]

要不要我顺便给你列一下常见的其他RPC协议串? 比如:

  • ncacn_np(Named Pipe)
  • ncacn_http(HTTP传输RPC)
  • ncadg_ip_udp(UDP版RPC) 有需要我可以一起讲,超好懂!⚡