首先,我对 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 地址的区域标识符?如果不是,我是否必须向系统查询所有区域标识符,并尝试使用每个区域标识符依次连接到地址,直到成功?还是一开始就尝试使用链接本地地址进行通信是一个愚蠢的想法?