IPv6地址的文本表示规范

 

背景

随着IPv6越来越普及,经常要跟IPv6地址打交道,迫切需要一个统一的IPv6地址文本表示规范。

RFC4291简单的说明了如何将IPv6地址表示成文本形式,但有很多有歧义和不周全的地方。

RFC5952针对IPv6地址的文本表示形式给出了一个推荐方案,对RFC4291做了完善。

 

规范的IPv6地址文本表示形式

IPv6地址有128位,写成16进制最多需要32个16进制数字。通常将IPv6地址切分成8份,每份占16位,单独的一份最多用4个16进制数字表示,任意两份之间使用‘:’进行分割。

为了规范IPv6地址的文本表示形式,引入了以下规则:

1. 16位字段中起始的0必须被压缩。

例如,2001:0db8::0001是不可接受的,必须被表示成2001:db8::1。一个单独的16位0000字段必须被表示成0。

2.“::”的用法

  2.1,在使用符号“::”时必须最大化它的能力。例如,2001:db8:0:0:0:0:2:1必须被缩短成2001:db8::2:1。类似的,2001:db8::0:1是不可接受的,因为符号“::”可以被用来产生一个更短的表达形式2001:db8::1。

  2.2,符号“::”必须不能被用来仅缩短一个16位0字段。例如,2001:db8:0:1:1:1:1:1是正确的,但2001:db8::1:1:1:1:1是错误的。

  2.3,当有多于一个地方可以放置“::”时,必须选择缩短最长的连续16位0字段(例如,在2001:0:0:1:0:0:0:1中,被缩短的是连续的3个0字段)。

    当连续16位0字段的长度相同时(例如,2001:db8:0:0:1:0:0:1),必须选择缩短第一个连续0序列。例如,2001:db8::1:0:0:1是正确的表示形式。

3. IPv6地址中的字符“a”,“b”,“c”,“d”,“e”和“f”必须使用小写。

4. IPv6地址和端口组合时,必须使用[2001:db8::1]:80这种形式。尤其是在URI中使用IPv6地址时。

posted @ 2023-03-20 13:59  苍然满关中  阅读(714)  评论(0编辑  收藏  举报