【发布时间】:2014-09-29 14:00:51
【问题描述】:
对以下 IPv6 地址使用零压缩时
2001:0DB8:0000:CD30:0000:0000:0000:0000/60
为什么这不正确:
2001:DB8::CD30::/60
...虽然这是:
2001:DB8:0:CD30::/60
【问题讨论】:
标签: networking ipv6
对以下 IPv6 地址使用零压缩时
2001:0DB8:0000:CD30:0000:0000:0000:0000/60
为什么这不正确:
2001:DB8::CD30::/60
...虽然这是:
2001:DB8:0:CD30::/60
【问题讨论】:
标签: networking ipv6
零压缩只能进行一次。原因是 IPv6 地址不再是唯一的。
以2001:DB8::CD30::/60 为例,它会扩展到
2001:0DB8:0000:0000:0000:CD30:0000:0000/60
或
2001:0DB8:0000:0000:CD30:0000:0000:0000/60
或
2001:0DB8:0000:CD30:0000:0000:0000:0000/60
...?
如果只使用一个“::”,则结果将始终是唯一的,因为只有一个可能的固定数量的零要插入。
【讨论】:
因为它是模棱两可的。
地址2001:DB8::CD30:: 可以扩展为以下任何一种可能性:
2001:DB8:0:CD30:0:0:0:0
2001:DB8:0:0:CD30:0:0:0
2001:DB8:0:0:0:CD30:0:0
2001:DB8:0:0:0:0:CD30:0
【讨论】:
原因是::用于缩短16位地址字段中的多个零。
在您的示例2001:0DB8:0000:CD30:0000:0000:0000:0000/60 中,它在后缀的 16 位字段中只有多个 0,2001:0DB8:0000:CD30: 中的 0000 只是一个 16 位字段,您只需使用 0 即可缩短它。
更有趣的问题:如何缩短 this2001:0000:0000:CD30:0000:0000:0000:0000/60?
定义在standard:
此外,[RFC4291] 的第 2.2 节注释,
'The "::" can only appear once in an address.'
地址可以写成以下的意思是什么意思:
2001:0:0:CD30::/60 或 2001::0:CD30:0:0:0:0/60.
两者都是有效的,但我更喜欢第一个表示,因为零压缩的目的是缩短第一个表示较短的地址。
【讨论】: