【发布时间】:2011-02-04 04:51:17
【问题描述】:
我想查询一个 IP 以获取其主机名。这个的标准端口是什么?会不会是 /etc/services 中“主机名”下列出的 101 端口?
【问题讨论】:
我想查询一个 IP 以获取其主机名。这个的标准端口是什么?会不会是 /etc/services 中“主机名”下列出的 101 端口?
【问题讨论】:
UDP 端口 101 用于提供“主机名”服务,但原来的 RFC (RFC811) 已被 RFC953 淘汰,RFC953 被标记为“历史”。
这些天来,您可以查阅DNS(域名系统),其中列出了许多其他相关的 RFC 以对其进行更新。您通常会针对您使用的语言使用适当的库函数来查询 DNS(一个问题是您应该查询的 DNS 服务器的 IP 地址是什么)。
在这两种情况下(主机名和 DNS),您咨询的机器不是具有您感兴趣的特定 IP 地址的机器。从您的问题中不清楚您是否希望询问具有感兴趣 IP 地址的主机它的名称是什么,或者您是否希望向另一台机器提出问题。实际上,您最终会询问其他机器 - DNS 服务器。
【讨论】:
/etc/services 中的大多数“众所周知的端口”都是历史实现的残余——这些“历史协议”的实现不再使用。
您找到的端口 101 被注释为“NIC 主机名服务器”。我发现RFC 811 和RFC953 描述了在端口 101 上服务的协议。最有趣的是,在 RFC 811 (1982) 时唯一的实现是在 SRI International 的特定机器上运行的。 “端口 101 协议”不是现代互联网上可以找到的服务。
我能想到的唯一一种旨在提供您需要的信息的服务是 SNMP,并且不能保证您会找到正在运行的 SNMP 服务或知道所需的访问关键字(“社区名称”)通过 SNMP 服务查看远程主机名。
许多特定的服务实现以主机名响应,例如:
telnet alias.machine.net 25
220 realname.machine.net ESMTP Postfix (Debian/GNU)
编辑:其他一些答案建议您查看 DNS 端口。 DNS(域名系统)并不是您真正要求的。但是,如果您确实想使用 DNS 查找,请检查 Windows、MacBSD 和 Linux 下 C 中可用的 gethostbyaddr() 函数。
【讨论】:
很好的 dns 在端口 53 上运行
【讨论】: