我对 ipv6 多播地址有疑问。当我使用 ipv6 ping google dns (2001:4860:4860::8888) 时,tcpdump 中显示的请求节点多播地址是 ff02::1:ff13:7e5,此处范围的值为 2,表示本地链路。
它不应该是 e 表示全局范围吗?
答案1
发往不同网络的流量将传送到本地网络上的网关。在 IPv4 中,您的主机将使用 ARP 来获取其配置的路由器的 2 层地址。IPv6 使用 ND 和请求的节点地址来实现相同的目的。ARP 发送广播,而 IPv6 没有。广播会中断 LAN 上的每个主机,但请求的节点地址可能只会中断一个主机,因此 IPv6 发现 2 层地址的方式对 LAN 上的主机来说负担较小。
您在向请求的节点地址发送的 Link-local 多播中看到的是配置网关的邻居发现。一旦您的主机拥有该地址,它就会使用网关的第 2 层地址为发往 Google 的 IPv6 数据包构建帧。然后,ping 的帧将在第 2 层传送到您的路由器,但在第 3 层发送到 Google 的全局 IPv6 地址。