1.基本概念
IPV6是英文“Internet Protocol Version 6”的缩写,即互联网协议第6版,是互联网工程任务组(IETF)设计的用于代替IPV4的下一代IP协议。
由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍
2.表示方法
我们知道ipv4的地址长度是32位,用点分十进制表示的(192.168.0.1)。即有232个。ipv6的地址长度是128位,采用的是16进制表示,即有2^128个,有3种表示方法。
冒分十六进制表示法
格式为X:X:X:X:X:X:X:X 即8组16位写入。每个组包含4个十六进制数字(16位)。
例如:abcd:0000:1111:2222:1357:2468:5555:6789
这种表示法中,每组的前导0是可以省略的。
例如:2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
0位压缩表示法
有些IPv6地址中间可能包含很长一段的0,可以把连续一段0压缩为"::"。但是为了保证地址解析的唯一性,地址中“::“,只能出现一次。
例如:FF01:0:0:0:0:0:0:1101 → FF01::1101 0:0:0:0:0:0:0:1 → ::1 0:0:0:0:0:0:0:0 → ::
内嵌IPv4地址表示法
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示。
例如:::ABCD:192.168.0.1 ::192.168.0.1 1234:5678:abcd:9012:ef12:ed12:192.168.0.1
3.地址分类
ipv6的地址划分可分为单播、组播、任意播。相比ipv4新增了任意播类型,取消了ipv4中的广播地址,因为ipv6中的广播功能可以通过组播完成。
单播地址
用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。
IPv6单播地址与IPv4单播地址一样,都只标识了一个接口。为了适应负载平衡系统,RFC3513允许多个接口使用同一个地址,只要这些接口作为主机上实现的IPv6的单个接口出现。单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址。
全局单播地址
等同于IPv4中的公网地址,可以在IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。
前3bit 固定001;
地址范围:2xxx:xxxxx/3 - 3FFF: :FFFF;
2001::/16 IPV6因特网地址;
2002::/16 6to4过渡地址;
3ffe::/16 用于6bone测试目的的前缀,已经弃用;
注意:接口标识符:指64bit的MAC地址(未来网络适配器的MAC地址),或者是基于48bit MAC地址扩展为64bit(EUI 64)。在全局单播地址中,规定如2001:BCFF:FEA6::/48表示一个IPv6路由前缀(运营商或服务提供商),2001:BCFF:FEA6:6C01::/64表示一个IPv6子网前缀(即:给用户分发的子网掩码)
本地单播地址
链路本地地址和唯一本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址,也就是IPV4地址中局域网专用地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。
链路本地地址(终端自动生成)
固定前缀FE80::/10;当一个节点启用IPv6时自动生成,格式如下图,64位拓展由MAC地址按照EUI 64转换而来。
EUI-64格式:基于MAC地址自动构造;
例如:MAC地址为0012:3400:ABCD;
首先把MAC地址对半分开,插入一个固定值FFFE;
0012:3400:ABCD ----> 0012:34FF:FE00:ABCD;
再把第七位翻转:0----> 1, 1---->0 (从左到右数到第7位)
0012:34FF:FE00:ABCD ----> 0212:34FF:FE00:ABCD;
最后加上前缀:FE80::212:34FF:FE00:ABCD
本地站点地址:类似于IPV4中的私有地址,仅在内部网络使用。
固定前缀FEC0::/10;
对于IPv6本地站点地址的配置,必须通过DHCPv6进行地址的分配、无状态的前缀公告、或者手工的进行输入。
唯一本地地址:ULA,唯一本地地址,概念上相当于私有IP,仅能够在本地网络使用,在IPv6 Internet上不可被路由。上面提到的站点本地地址由于起初的标准定义模糊而被弃用,而后RFC又重新定义了唯一本地地址以满足本地环境中私有IPv6地址的使用。
在RFC4193中标准化了一种用来在本地通信中取代站点本地单播地址的类型。ULA拥有固定前缀FC00::/7,分为两块:FC00::/8暂未定义,FD00::/8定义如下:
兼容性地址
在IPv6的转换机制中还包括了一种通过IPv4路由接口以隧道方式动态传递IPv6包的技术。这样的IPv6结点会被分配一个在低32位中带有全球IPv4单播地址的IPv6全局单播地址。另有一种嵌入IPv4的IPv6地址,用于局域网内部,这类地址用于把IPv4结点当作IPv6结点。此外,还有一种称为“6to4”的IPv6地址,用于在两个通过Internet同时运行IPv4和IPv6的结点之间进行通信。
映射IPV4的IPV6地址--仅用于拥有IPV4和IPV6双协议栈节点的本地范围
其中高80bit设为0,后16bit设为1,再跟IPV4地址,
0000:0000:0000:0000:0000:ffff:206.123.31.2,
0000:0000:0000:0000:0000:ffff:ce7b:1f01。
特殊地址
未指定地址:形式:0:0:0:0:0:0:0:0/128 --> ::/128;
表示地址未指定,或者在写默认路由时代表所有路由;该地址作为某些报文的源IP地址,比如作为重复地址检测时DAD时发送的邻居请求报文的源地址,或者DHCPv6初始化过程中客户端所发送报文的源IP。
未指定地址(0:0:0:0:0:0:0:0或::)仅用于表示某个地址不存在。它等价于IPv4未指定地址0.0.0.0。未指定地址通常被用做尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用做目标地址。
回环地址:形式:0:0:0:0:0:0:0:1;
用于标识环回接口,允许节点将数据包发送给自己。它等价于IPv4环回地址127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过IPv6路由器转发 。
组播地址
IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。 IPv6组播地址的最明显特征就是最高的8位固定为1111 1111。IPv6地址很容易区分组播地址,因为它总是以FF开始的 。
前缀:FFxx::/8;
在IPV6中没有广播的概念,而是使用用组播来代替;因此IPv6中存在大量的组播使用。
标志位为0000表示是永久保留的组播地址,分配给各种技术使用;
标志位为0001表示是用户可使用的临时组播地址;
范围段定义了组播地址的范围,其定义如下:
二进制 十六进制 范围类型
0001 1 本地接口范围
0010 2 本地链路范围
0011 3 本地子网范围
0100 4 本地管理范围
0101 5 本地站点范围 类似组播的私网地址
1000 8 组织机构范围
1110 E 全球范围 类似组播的公网地址