【问题标题】:IPv6 zero compressionIPv6 零压缩
【发布时间】: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


    【解决方案1】:

    零压缩只能进行一次。原因是 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
    

    ...?

    如果只使用一个“::”,则结果将始终是唯一的,因为只有一个可能的固定数量的零要插入。

    【讨论】:

      【解决方案2】:

      因为它是模棱两可的。

      地址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

      【讨论】:

      • 为什么投反对票?这个答案客观上是正确的。
      【解决方案3】:

      原因是::用于缩短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.

      两者都是有效的,但我更喜欢第一个表示,因为零压缩的目的是缩短第一个表示较短的地址。

      【讨论】:

        猜你喜欢
        • 2015-02-01
        • 2015-09-19
        • 1970-01-01
        • 2011-10-26
        • 2013-05-06
        • 1970-01-01
        • 2017-11-09
        • 2019-05-30
        • 1970-01-01
        相关资源
        最近更新 更多