我试图了解 ping 命令在这种情况下如何工作:
主机 A IPv6 地址:2001:A::A(MAC 地址 AA-BB-CC-00-11-22)
主机 B Ipv6 地址:2001:B::B(MAC 地址 22-44-66-00-EE-DD)
这两个主机连接到一个路由器,每个不同的前缀都有一个接口,例如主机 A 连接到路由器的接口 2001:A::1(MAC 77-88-99-00-DD-22),主机 B 连接到路由器的接口 2001:B::1(MAC 11-66-AA-00-33-88)。
假设所有设备上的缓存都是空的,包括路由器。从 A 到 B 执行 ping 命令的结果应该是什么?ping 2001:B::B
1)主机 A 为其默认网关进行路由器请求(A 需要 MAC)
2)从路由器到主机 A 的路由器通告
3)A 向路由器发送 icmp echo 请求(从 A 的 MAC 到路由器的 MAC)
4)路由器是否需要执行邻居发现才能找到 B 的 MAC 地址?
其余一切都是第 4 点的结果。
谢谢
答案1
据我了解,步骤 1 和 2 不是 ICMP 请求的功能,而只是连接到 IPv6 网络的功能。这与 IPv4 不同,NIC 可以保持安静并在某些情况下仅监听网络流量,直到其主机有内容要传输,或响应链路层广播。
步骤 2 中的 RA 将名义上提名自己为默认网关。
因此,当主机 A 向不在本地网络上的主机发送 ICMPv6 回显请求时,它将单播到路由器的 IPv6 地址,在本例中为 2001:A::1。路由器接口的 MAC 地址已在邻居发现步骤中声明,因此无需进行额外的 ARP:主机 A 将预先映射 2001:A::A(MAC 地址 AA-BB-CC-00-11-22)。
路由器将接收来自主机 A 发往主机 B 的数据包。路由器知道主机 B 直接连接在接口 2001:B::1 上,并且知道主机 B 的 MAC 地址,因此将向主机 B 单播发送 ICMPv6 请求。
当主机 B 首次连接到路由器时,主机 B 的 MAC 地址就已经独立于 ICMPv6 请求确定。这与 IPv4 不同,在 IPv4 中,路由器who-has
在收到 B 网络上主机的数据包后必须在 B 接口上进行 ARP 广播。