"单个接口也可能有多个任何类型的IPv6地址(单播,任播和多播)或范围"
----引用形式RFC 4291
最近我在实验过程中遇到了这个问题.我通过了RFC 4291,没有任何线索......
以下是我的实验的简要介绍:
有两个主机,我分别为它们分配了两个IPv6地址.然后,我测试了两台主机之间的连接.我使用命令"ping6 ipv6_addr".但事实证明,它无法通过命令ping6访问对等主机的两个地址.
通过示例更加敏锐*(两个命令都在主机A上执行,使用linux kenel 2.6.32)*:
ping6 addr_b_1 ---它的工作原理是
ping6 addr_b_2 ---无法通过
我想和你们讨论两个问题:
1.为什么ipv6协议允许这种机制,一个具有多个地址的接口?
2.为什么我不能同时到达主机a的两个地址.(应该是这种情况.IPv6的默认地址选择在RFC 3484中定义)
感谢你们!
Cel*_*ada 38
早期的IPv4堆栈不支持每个接口多个IP地址.后来的改进启用了"辅助"地址.这被发现在实践中非常有用,并且IPv6的设计者选择强制支持它作为标准的一部分,以便您始终可以依赖它.
IPv6的设计者所做的不仅仅是强制要求.他们使其成为IPv6协议的重要组成部分.每个IPv6接口都有一个链路本地IP地址.如果接口也能够在更大的网络(例如Internet)上进行通信,那么它还具有全局范围地址.那是两个最小的地址,就在那里.如果主机支持多宿主互联网连接,它可能拥有更多地址.每个接口的多个IP地址在IPv6中并不像在IPv4中那样是事后的想法.
你提到缺点,但除了配置错误,我不认为这种情况会导致任何问题.(也许你可以详细说明你的设置以及为什么一个IP地址有效而不是另一个;但我保证你会遇到某种错误导致它).
另一方面,想想优势:
另外:请记住,几乎所有IPv4堆栈都支持每个接口多个地址,因此这与v4和v6之间没有太大区别.它只是不支持它的旧v4堆栈.区别在于v6具有自动管理地址集的方法,但这在v4中不存在.