`rpcinfo` 是否列出了 RPC 服务的端口号?

`rpcinfo` 是否列出了 RPC 服务的端口号?
$ 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

我认为“地址”显示了 RPC 服务的 IPv6 地址,根据https://unix.stackexchange.com/a/234158/674

是否rpcinfo列出 RPC 服务的端口号?我怎样才能找到它?

答案1

这个版本的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)

相关内容