在局域网中使主机名解析工作需要什么?

8
我正在开发一个运行在局域网上的网络应用程序。其中一个核心需求是,该应用程序需要维护与其之前通信过的局域网中其他计算机的列表,以便能够恢复先前的会话。一个朴素的解决方案是只记住IP并将其存储在表格中,但如果同行者的IP地址发生更改怎么办?
相反,我想存储同行者的主机名,这样即使IP地址发生变化,它们仍然可以通过它们的主机名可达。(我知道主机名也可能会更改,但那已经足够了。)
那么我的问题是,在混合Windows/Mac/Linux客户端的局域网上,要使主机名解析正常工作,到底需要什么?

如果您在公司网络上,可以向DNS服务器注册您的主机名。如果您在私人局域网上,则有不同的选项可用于在单个子网局域网或可能分段为单独的广播域(分离子网)的网络上使用此应用程序。您的网络将是什么样子? - resmon6
该应用程序将在单个子网LAN中运行。但它将被部署到数千个不同的客户端以在其自己的LAN中运行。因此,我不能假设他们正在使用什么路由器或可用的网络服务。 - lmirosevic
1个回答

7
没有使用中央机构,实现这一点的唯一可靠方法是通过使用零配置名称解析。这意味着,如果没有多播路由器,您只能在解析主机所在的同一子网上动态解析对等方。您可以使用类似于Mac的Bonjour、Windows的NetBIOS或SSDP或Linux的Avahi之类的东西,但不能假定这些已启用。我可能忽略了一些更流行的协议,可以很好地执行此功能,但我个人会为您的应用程序编写一个快速的UDP广播名称解析协议。请查看以下内容以获取更多想法: 零配置名称解析 无需DNS的通用本地网络名称解析方法?

http://en.wikipedia.org/wiki/Zero_configuration_networking#Name_resolution

http://en.wikipedia.org/wiki/Broadcast_address#IP_networking

我会选择一个特定的UDP端口来监听(比如说12000),当你准备解析主机时,向255.255.255.255的12000端口发送一个“hello”UDP数据包,你的网络中运行你的应用程序的其他主机将回复一个包含它们主机名和可能其他信息的数据包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接