$ rpcinfo
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /run/rpcbind.sock portmapper superuser
100000 3 local /run/rpcbind.sock portmapper superuser
根据https://unix.stackexchange.com/a/234158/674 ,我认为“地址”显示了 RPC 服务的 IPv6 地址。
是否rpcinfo
列出了 RPC 服务的端口号?我怎样才能找到它?
这个版本的实现
rpcinfo
似乎有点草率,因为端口号显示为两个单独的字节而不是单个 16 位数字。该
portmapper
服务始终位于端口 111 中,因为它用于查找所有其他 RPC 服务,其端口号可能会有所不同。(由于 ONC RPC 协议是在防火墙普及之前开发的,因此现代实现越来越多地使用静态端口号;例如,NFS 现在预计将在端口 2049 中作为标准。)在 IPv6 端,这是最清晰可见的:全零 IPv6 地址显示为
::
,然后端口号表示为.0.111
后面。在这种情况下,这意味着端口号的最高有效字节为 0,最低有效字节为 111。IPv4 方面使用相同的语法:地址字段具有全零的 IPv4 地址 (INADDR_ANY)和连接在一起
0.0.0.0
的端口号的两字节表示。.0.111
您可以通过将端口号的 MSB 乘以 256,然后将 LSB 的值添加到它来获得实际的端口号。因此,例如,端口号 2049 将
.8.1
按此语法显示 (8
* 256 +1
= 2049)