如何让客户端找到具有未知 IPv6 地址的服务器?

网络工程 IPv6 多播 播送 网络发现
2022-02-23 11:26:39

先说明一下我的情况:

我目前正在尝试构建一个解决方案来管理网络上的多个物联网设备。应该可以自动使客户端连接到托管 MQTT-Broker 的中央服务器。

在 IPv4 网络中,我会简单地从客户端发送一个广播数据包,服务器将使用包含其自己的 IP 地址的数据包对其进行响应。既然客户端知道了服务器的 IP 地址,它就可以在此之后连接到它。

但是,IPv6 的情况有所不同,因为不再有广播。如何在不硬编码多播地址的情况下让我的客户端自动找到服务器?

3个回答

在 IPv6 中,不再有任何广播——将一个数据包发送到大量未指定的主机。只有多播、单播和任播。在 IPv6 中,所有节点都必须支持多播。如果没有多播,您需要的许多服务将根本无法工作。

来源:http: //ipv6friday.org/blog/2011/12/ipv6-multicast/

对 IPv4 和 IPv6 执行此操作的正式/正确方法是使用“服务发现”。苹果的“Bonjour”系统就是一个例子。

我可以想到自动服务发现的两种正确方法:

  1. 向 IANA 注册 IPv6 多播地址并让您的软件监听该地址。

  2. 让您的服务(或运行该服务的主机)发送多播 DNS 数据包以使网络知道自己。

两者都应该适用于 IPv4 和 IPv6。