问:ncacn_ip_tcp 和 ncalrpc 有什么区别
ncacn_ip_tcp | ncalrpc | |
|---|---|---|
| 含义 | Network Computing Architecture Connection-oriented over IP/TCP | Network 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)、Exchange、Active 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) 有需要我可以一起讲,超好懂!⚡