0

首先,我对 IPv6 的细节不熟悉,所以如果这只是对 IPv6 路由的误解,我不会感到惊讶。考虑我正在运行 P2P 覆盖网络的情况,其中一部分位于单个 LAN 的边界内。该 LAN 内的节点具有以下链路本地地址(由它们自己查看):

  • 对等体 1 fe80::225:4bff:fea8:e200%en0
  • 对等体 2 fe80::225:4bff:fea8:e201%eth1
  • 对等体 3 fe80::225:4bff:fea8:e202%en1

现在,假设每个对等点都能够通过某种方式发现其他对等点,并拥有彼此的地址。每个对等点都在监听一个端口,比如 12345。如果对等点 1 想与对等点 2 通信,他们可能会尝试使用 URI:

tcp://[fe80:225:4bff:fea8:e201%eth1]:12345

这是我遇到问题的地方。对等体 1 没有名为“eth1”的适配器,因此它不知道这个 IPv6 区域标识符。如果区域 ID 被从地址中剥离,对等体 1 无法确定它必须使用哪个适配器来联系主机。

那么问题来了:是否有可能以标准方式解析 IPv6 地址的区域标识符?如果不是,我是否必须向系统查询所有区域标识符,并尝试使用每个区域标识符依次连接到地址,直到成功?还是一开始就尝试使用链接本地地址进行通信是一个愚蠢的想法?

4

1 回答 1

5

仅当您有某种机制可以自动定位有问题的其他节点并连接、绑定到正确的接口时,链接本地地址才适用。

如果您希望用户手动输入地址,您应该使用站点本地地址(或者更好的是唯一本地地址)并让用户自己配置它们,或者在链接本地地址之上使用地址解析方法,例如作为 mDNS。

于 2009-08-05T16:10:12.787 回答