如何确保未知部署环境中的计算机之间的通信?

如何确保未知部署环境中的计算机之间的通信?

我有两台计算机。其中一台运行着服务器,另一台运行着与该服务器通信的应用程序。这些计算机部署到各个站点。有时这些计算机可以直接连接在一起,有时它们只能通过我无法控制的无线连接进行连接。作为附加要求,服务器还需要能够使用 dhcp 访问互联网(如果有连接)。目标是能够在办公室中设置这些计算机,然后将它们部署到几乎不需要现场配置的站点。

我该怎么做才能确保运行该应用程序的计算机始终(或尽可能多地)能够找到服务器并与其通信(通过端口 80 的 HTTP)。

我的想法是设置具有多个 IP 的服务器。它可以在一个 IP 上使用 DHCP 访问互联网。另一个 IP 将设置为静态 IP。应用程序计算机将配置为提前知道此静态 IP 地址并向其发出请求。但是,在展示如何实现它的教程中,我必须输入网关和子网掩码。这些不会根据我加入的网络而改变吗?

如果我遗漏了一些非常明显的信息或忽略了其他因素,请原谅。我对网络几乎一无所知。

如果有硬件可以帮忙,那就好了。

这是 vista 和 xp。

答案1

试图猜测哪个静态 IP 地址不会发生冲突是自找麻烦。正如 derobert 所建议的,多播 DNS + DNS-SD 很合适。Windows 的唯一堆栈是苹果的 Bonjour该实现将使您能够在本地网络上注册和解析您的服务,以及进行一些进一步的配置,突破防火墙(如果路由器支持 NAT-PMP 或 uPnP)并使用适当的 DNS-SD 记录更新 DNS 区域。

您可能需要编写一些脚本来将 Bonjour 绑定到应用程序的配置,但如果不知道您的应用程序是什么,就很难说哪种方式最合适。也就是说,使用简单批处理或 WSH 脚本自动执行的 dns-sd.exe 命令行实用程序可以完成这项工作,对于不太简单的配置,Python、Perl 或 Ruby 的各种绑定也可以完成这项工作。

答案2

解决这个问题的方法是使用现有的几种服务发现协议之一。例如,参见维基百科的 Zeroconf 文章。多播 DNS + DNS-SD 似乎是当前流行且得到广泛支持的方法,尽管还有其他方法(Wiki 中提到的最多)。

例如,apache2 存在一个 mod-dnssd,它允许 Apache 使用 Avahi 通过多播 DNS 宣布自己。

答案3

因为它们似乎总是在同一个网络上,所以您是否不能只在“服务器”计算机上运行 WINS 并通过 NetBIOS 名称进行连接?

这样,您根本就不需要担心 IP 地址。

实际上,现在我想到,您可能甚至不需要 WINS,NetBIOS 应该能够处理它。

相关内容