在介绍IPv6地址格式之前,让我们先了解一下十六进制数字系统。 十六进制是一种使用基数(底数)为16的位置数字系统。 为了以可读的方式表示值,该系统使用0到9的符号表示0到9的值,以及A到F的符号表示10到15的值。 每个十六进制数字可以表示0到15之间的值。
IPv6地址由128位组成,被划分为8个16位块。 然后,每个块都会被转换为由冒号符号(:)分隔的4位十六进制数字。
例如,下面是以二进制格式表示的128位IPv6地址,它被分成了8个16位块:
0010000000000001 0000000000000000 0011001000111000 1101111111100001 0000000001100011 0000000000000000 0000000000000000 1111111011111011
然后,每个块都被转换为十六进制,并用冒号符号(:)分隔:
2001:0000:3238:DFE1:0063:0000:0000:FEFB
即使在转换为十六进制格式后,IPv6地址仍然很长。 为了缩短地址,IPv6提供了一些规则,如下所示:
规则1: 去掉前导零:
在第五块中,0063可以省略前导的两个零,例如:
2001:0000:3238:DFE1:63:0000:0000:FEFB
规则2: 如果有两个或多个连续的零块,可以省略它们,并用双冒号(::)替代。 例如,在第6和第7块中:
2001:0000:3238:DFE1:63::FEFB
连续的零块只能被替代一次。 如果地址中仍然有零块,它们可以被缩减为一个零,例如,在第二块中:
2001:0:3238:DFE1:63::FEFB
IPv6有三种不同类型的单播地址方案,地址的后半部分(最后64位)始终用于接口ID。 系统的MAC地址由48位组成,通常以十六进制表示。 MAC地址被认为在全球范围内是唯一的。 接口ID充分利用了MAC地址的唯一性。 主机可以使用IEEE的扩展唯一标识符(EUI-64)格式来自动配置其接口ID。 首先,主机将自己的MAC地址分成两个24位的半部分。 然后,它在这两个半部分之间插入16位的十六进制值0xFFFE,生成EUI-64接口ID。
将EUI-64 ID转换为IPv6接口标识符
要将EUI-64 ID转换为IPv6接口标识符,需要在EUI-64 ID的最高有效位前补充一个位。 例如:
全局单播地址等同于IPv4的公共地址。 IPv6中的全球单播地址是全球可识别的和唯一可寻址的。
自动配置的IPv6地址被称为链路本地地址。 这些地址始终以FE80开头。 链路本地地址的前16位总是设置为1111 1110 1000 0000(FE80)。 接下来的48位设置为0,所以:
链路本地地址仅用于链路(广播段)上的IPv6主机之间的通信。 这些地址不可路由,因此路由器不会将链路本地地址转发到链路之外。
这种类型的IPv6地址是全球唯一的,但应该用于本地通信。 该地址的后半部分包含接口ID,前半部分被分为前缀、本地位、全局ID和子网ID。