我是一名软件开发人员,刚刚在 Techdays 上获得了一本关于 IPv6 的免费书籍,我正在阅读这本书是为了好玩。他们放弃了它,因为它有点旧(W2008),所以其他/较新的操作系统可能情况有所不同,但我不明白邻居发现获取 MAC 地址的必要性。
根据这本书,每个节点都会自动获得一个Link-local IP-address,该地址是通过FF-FE在第3和第4个字节之间插入并翻转U/L位的MAC地址构造的,因此对于一个Link-local IP, MAC 地址为 的节点00-AA-00-3F-2A-1C变为FE80::2AA:FF:FE:3F:2A1C。
为了确定链路层的 MAC 地址,一个 Neighbor Solicitation 消息被发送到链路本地 IP 地址,它用一条包含其 MAC 地址的消息进行回复......本地 IP 地址。因此,这听起来就像向询问地址的人邮寄明信片一样。
Mic*_*ton 20
每个节点都会自动生成一个本地链路地址,但是:
该地址可能不是使用RFC 2464 中指定的 EUI-64 格式生成的。IPv6 地址也可以是加密生成的地址 ( RFC 3972 )、临时隐私地址 ( RFC 4941 ),或者在现代操作系统中是稳定的隐私地址 ( RFC 7217 )。
由于管理员的显式配置,看起来具有 EUI-64 接口 ID 的地址实际上可能并不对应于指示的 MAC 地址。
因为您不能只是将地址“转换回”MAC 地址,所以您必须发送邻居请求来确定 MAC 地址。
邻居征集是必要的还有其他原因。其中一些是:
书都很好,但非常过时的书可能没有那么有用。甚至 IPv6 在过去十年中也进行了重大修订。最好的事实来源是相关的 RFC,包括原始 RFC 和任何标记为已更新或过时的 RFC。RFC 被足够详细地指定,以允许编写符合要求的实现。您可以通过阅读RFC 4861了解邻居发现的所有细节。
所以,你要么误解了,要么被误导了一些事情。
使用 SLAAC,主机可以使用其 MAC 地址构建自己的 IPv6 寻址,但许多人认为这很危险,会泄露太多信息,并允许跟踪特定主机。在此基础上,开发了隐私扩展和随机寻址,操作系统使用它们来提供隐私/安全。这意味着主机可以创建自己的寻址,而不是基于其 MAC 地址。
当主机需要在 IPv4 中发现邻居的 MAC 地址时,它使用 ARP。ARP 广播请求,但 IPv6 没有广播。相反,每个主机都必须加入一个请求节点多播组。该组基于其 IPv6 地址的最后 24 位。由于 IPv6 接口可以有任意数量的 IPv6 地址,因此主机可以加入多个请求节点多播组。寻找另一台主机的 MAC 地址的 IPv6 主机将向目标 IPv6 地址的请求节点多播组发送多播请求。
这提供了优于 IPv4 ARP 的优势。由于 ARP 对请求使用广播,因此它会中断第 2 层广播域上的每个主机。由于请求节点组播组使用目标 IPv6 地址的最后 24 位,因此 ND 组播请求可能只会中断目标主机,或者可能会中断二层广播域上的一两个其他主机。
| 归档时间: |
|
| 查看次数: |
3251 次 |
| 最近记录: |