为什么IPv6允许一个接口与多个地址?

“一个接口也可能有多个任意types的IPv6地址(单播,任播和多播)或范围” —-引用formsRFC 4291

最近我在我进行的实验中遇到了这个问题。 我通过RFC 4291,没有线索

以下是我的实验的简要介绍:
有两个主机,我有两个IPv6地址分别分配给他们。 然后,我testing了两台主机之间的连接。 我使用命令“ping6 ipv6_addr”。 但事实certificate,它不能通过命令ping6同时访问对等主机的地址。

更具有感知性的例子*(两个命令在主机A执行,使用linux kenel 2.6.32)*:
ping6 addr_b_1 —它的工作原理
ping6 addr_b_2 —无法通过

我想和你们讨论两个问题:
1.为什么ipv6协议允许这种机制,单个接口有多个地址?
2.为什么我不能同时访问主机a的两个地址。 (应该是这样的,IPv6的默认地址select是在RFC 3484中定义的)

感谢你们!

早期的IPv4堆栈不支持每个接口多个IP地址。 稍后的改进启用了“次要”地址。 这被发现在实践中是非常有用的,IPv6的设计者选择强制支持它作为标准的一部分,这样你就可以永远相信它是可能的。

IPv6的设计者不仅仅是要求它。 它们使之成为IPv6协议的重要组成部分。 每个IPv6接口都有一个链路本地IP地址。 如果接口也能够在更大的网络(如Internet)上进行通信,那么它也具有全局范围地址。 这是最低的两个地址,在那里。 如果主机位于多宿主Internet连接的后面,则可能有更多的地址。 每个接口的多个IP地址不像IPv4那样是IPv6的事后考虑。

你提到了缺点,但是没有配置错误,我不认为这种情况会造成任何问题。 (也许你可以详细说明你的设置,为什么一个IP地址工作,但不是另一个,但是我保证你有某种错误导致它)。

另一方面,想想优点:

  • 即使没有可用的网络基础设施(即路由器),设备也可以使用链路本地地址在本地局域网上互相发现。 之后,如果添加路由器并且全局范围地址变为可用,则这些地址增加地址集,它们不替换链路本地地址; 所以使用链路本地地址的现有通信不会中断。
  • 当互联网连接被丢弃,添加或替换时,可以撤销或添加该组中的一个IP地址,而不会影响其他IP地址。 由于“depracated”状态,这使得从一个IP地址到另一个IP地址的优雅重新编号,接口支持一段时间。

另外:请记住,几乎所有的IPv4堆栈也支持每个接口多个地址,所以这与v4和v6之间的差别不大。 只有真正旧的v4堆栈不支持它。 不同之处在于v6有自动管理这组地址的方法,但在v4中不存在。