IPV6
地
址
表
示
法
读者一定已经了解
32
位的
IPv4
地址的表示方式了
,IPv4
地
址被分割为
4
个
8
位段
,
其中每个
8
位段的数字大小在
0~255
之间
,
并且每个
8
位段之间使用英文符号句点“
.
”
来分开
,
因此有时也使用术语“点分十进制表示法”来专指
IPv4
地址的这种表示法。
而
128
位的
IPv6
地址则被分割成
8
个
16
位段来表示
,
其中每个
16
位段书写为大小在
0x0000~0xFFFF
之间的十六进制的数宇表示
,
并且每个
16
位段之问使用英文符号冒号“
∶
”来分开。例如下面就是一个
IPv6
地址的书写方式
:
3ffe
∶
1944
∶
0100
∶
000a
∶
0000
∶
00bc
∶
2500
∶
0d0b
要想记住更多一些像这样表示的地址实际上是几乎不可能的
,
当然书写这些地址也不是一件令人愉快的事情
。
幸运地是有两条规则可以用来简化
Pvb
地
址书写的大小。
第一条规则是
:
任何一个
16
位段中起始的
0
不必写出来
;
任何一个
16
位段如果少于
4
个十六进制的数字
,
就认为忽略书写的数字是起始的
0
。
在前面提到的地址例子中
,
第
3
、
4
、
5
、
6
和
8
个分段都包含有起始的
0
。利用这个地址压缩简化规则
,
该
地址可以书写为
:3ffe
∶
1944
∶
100
∶
a
∶
0
∶
bc
∶
2500
∶
d0b
。
这里要注意的是
,
只有起始的
0
才可以被忽略掉
;
末
尾的
0
是不能忽略的
,
因为这样做会使
16
位分段变得不确定
,
你无法确切地判断所省略的
0
是在所写的数字之前还是在其之后。
另外
,
还有一个值得注意的地方是
,
上述的地址例子中的第
5
个分段全部是
0,
并且被书写为单个
0
。事实上
,
有
许多
IPv6
地
址中具有―长串的
0
。举例如下
:
ff02
∶
0000
∶
0000
∶
0000
∶
0000
∶
0000
∶
0000
∶
0005
这个地址可以简写为以下形式
:
ff02
∶
0
∶
0
∶
0
∶
0
∶
0
∶
0
∶
5
然而
,
利用第二个规则可以进一步地简化这个地址的书写格式
:
任何由全
0
组成的
1
个或多个
16
位段的单个连续的字符串
都可以用一个双冒号“::”
来表示。
利用这条规则
,
上面例子中的地址可以表示成如下格式
:ff02
∷
5
。
使用这样的方式书写上面这样的地址显然可以增加很多便利。但是在这里要注意的是
,
这条规则强调的是仅仅对于单个连续不间断的全
0
字符串分段部分能够用一个双冒号
“::”来表示
,
在一个
IPv6
地址中使用多于―个以上的双冒号会引起含混不清
。
下面举一个这样的
地址例子作为说明
:
2001
∶
0d02
∶
0000
∶
0000
∶
0014
∶
0000
∶
0000
∶
0095
对于上面这个地址
,
以
下两种地址的缩写方式都被认为是正确的
,
因
为它们都只使用了
一次双冒号
:
2001
∶
d02
∷
14
∶
0
∶
0
∶
95
2001
∶
d02
∶
0
∶
0
∶
14
∷
95
但是
,
请读者注意
,
下
面这个缩写方式是不正确的
,
因
为它使用了两次双冒号
:
2001
∶
d02
∷
14
∷
95
之所以认为上面这个缩写方式是错误的
,
是
因为它中间的两个全
0
字符串的长度是含混不清的
,
从而无法确定它们的长度:它可以表示成下面的任何一种可能的
IPv6
地
址
:
2001
∶
0d02
∶
0000
∶
0000
∶
0014
∶
0000
∶
0000
∶
0095
2001
∶
0d02
∶
0000
∶
0000
∶
0000
∶
0014
∶
0000
∶
0095
2001
∶
0d02
∶
0000
∶
0014:0000
∶
(XXX)
∶
0000
∶
0095
不像
IPv4
协议的前缀
(
即地址的网络部分
)
可以通过点分十进制或十六进制地址掩码标识
,
或可以通过位计数
(bitcount)
来标识
,IPv6
协议的前缀始终通过位计数的方式来标识。更确切地说
,
通过在
IPv6
地址后面加―个斜线
“
/
”
,
随
后再跟一个十进制的数字来标识一个
IPv6
地址的起始位有多少位是前缀位
。举一个例子
,
下面这个地址的前缀就是起始的
64
位
:3ffe
∶
1944
∶
100
∶
a
∷
bc
∶
2500
∶
d0b/64
。
当读者需要书写一个
IP
地址的前缀时
,
也使用和
IP
叫地址一样的书写方式将所有的主机位设置为
0
。例如
:
3ffe
∶
1944
∶
100
∶
a
∷
/64
―个由全
0
组
成的
IPv6
地
址能够被简单地写成―个双冒号。
在本书中
,
存在两种实例使用了全
0
的地址。
第―个实例就是缺省地址
,
这将在第
12
章
中讨论
,
在那里缺省地址表示为全
0
的
形式
,
并且它的前缀长度也是
0:
∷
/0
第二个使用全
0
的
IPv6
地
址的实例是未指定地址
(unspecified address)
。未指定地址使用在某些邻居发现协议过程中
,
邻居发现协议将在本章后面的章节中讲述。一个未指定地址就像―个填充器
,
用来标识一个还未确定的实际
IPv6
地
址。在书写一个未指定地址的时候要注意
,
它与缺省地址的书写方式是有区别的
,
它们的前缀长度不同
:
∷
/128
。