IPv4分为A、B、C、D、E五类,而IPv6突破了IPv4类别划分。IPv6被分为本地链路地址、IPv6本地站点地址、IPv6全球单播地址、IPv4过渡IPv6兼容地址、IPv6基于EUI-64接口标识符地址。下面分别对上述地址进行描述。
IPv6本地链路地址
IPv6本地链路地址,类似于IPv4中APIPA(Automatic Private IP Addressing,自动专用IP寻址)所定义的地址169.254.0.0/16。首先说明一下IPv4中APIPA(AutomaticPrivate IP Addressing,自动专用IP寻址)地址会在什么样的情况下产生和使用。比如:在企业网络中配置了DHCP服务器,为企业网络中的客户机提供IP地址分配,如果某天DHCP服务器故障,无法为企业网络中的客户机提供IP地址分配,此时客户主机会产生一个APIPA地址。该地址在一个子网内范围内可以保证主机之间的通信,但是APIPA地址是不可以完成路由通信。而IPv6本地链路地址的作用在于发现邻居节点和在无状态自动配置中链路本地上节点之间的通信。并且只能在连接到同一本地链路的节点之间通讯,不能跨路由器进行通讯和路由转发,具体如何理解IPv6的本地链路地址,首先要理解IPv6所定义的链路、站点、与全局的意义。如图12.26所示:IPv6的链路相当于企业网络中连接在一个二层交换机的主机链路,更明确的一种说法是链路处于同一个广播域,如果从IPv4的角度来理解可以理解成IPv6的链路就是在同一子网内的主机。所以IPv6的本地链路地址,只能在IPv6的本地链路中使用,如链路A与链路B中的IPv6主机使用本地链路地址在各自的链路上通信,但是不可以使用本地链路地址完成链路A与链路B之间的通信,这与IPv4中的APIPA(Automatic Private IP Addressing,自动专用IP寻址地址)类似。
注意:发现邻居节点:类似于CISCO的CDP。无状态自动配置:指不能通过DHCP获取地址,也没有手工的配置IPv6地址。
对于IPv6本地链路地址的配置,当在一个节点上启动了IPv6协议栈,如在Cisco网络设备的接口下使用IPv6 enable命令,此时就会在该接口下自动配置一个本地链路地址, 如FE80::02D0:BCFF:FEA6:6C01。如图12.27所示,表示IPv6本地链路地址的前缀为固定的FE80::/10,而默认情况下从11bit到64bit设置为0,而剩下的64bit,就使用接口的MAC地址扩展为64位进行填充标识。而接口MAC地址原本是48位,如何将48位的MAC地址扩展为64位进行填充的原理在本小节的后面“IPv6基于EUI-64地址接口标识符的配置”有详细描述。
IPv6本地站点地址
IPv6本地站点地址,只能在IPv6所定义的一个站点内使用,站点的概念如图12.26 IPv6的链路、站点、全局所示,链路A与链路B都处于同一个站点内,IPv6本地站点地址类似于IPv4环境RFC1918所定义的“私有IP地址”,如10.0.0.0/8.,172.16.0.0/16-172.31.255.255/16和192.168.0.0/16。所以IPv6本地站点地址是不能应用到了internet上,而只能使用在企业内部网络。既然此类IPv6的本地站点地址只能用在企业内部网络,难道是为了做NAT,代理企业内部上网?但是我们知道IPv6完全有足够的IP地址空间为每一个用户去分配一个用于internet的地址,并且IPv6环境中的NAT技术是用来解决IPv4与IPv6过渡兼容的问题,而不是代理私有专用网络IP访问Internet。那IPv6本地站点地址的作用是什么呢?如下所示的一些基本作用描述。
n用于企业内部打印机、共享文件等常见服务
n为企业内部服务器,客户机分配IP地址,限制访问internet。
n为企业内部交换机、网关、无线接入点分配IP地址
n用于远程管理企业内部服务器、路由器等相关网络设备
n没有获取全球可聚合单播地址的组织机构,可使用IPv6的本地站点地址进行网络建设
注意:IPv6的本地链路地址与本地站点地址的重大区别:本地链路地址只能在同一个二层链路中完成通信,不可被路由。而本地站点地址是可能路由的。
对于IPv6本地站点地址的配置,必须通过DHCPv6进行地址的分配、无状态的前缀公告、或者手工的进行输入,如FEC0:FECC:2::1/10。本地站点地址是由固定10bit地址前缀FEC0::/10、54bit子网标识以及64bit的扩展MAC地址组成。如图12.28所示。
注意:对于图12.28本地站点地址格式是按照二进制的方式进行划分的,切忌不要以十六进制的方式来进行分析。如FEC0::/10其实真正固定的部分按二进制计算是1111 1110 11,而不是十六进制FEC0。54bit子网标识指可提供2^54=65535个不同的子网。
IPv6全球单播地址
IPv6全球单播地址指用于internet上的地址,类似于IPv4的“公有”IP地址,如202.202.1.1/30。而IPv6全球单播地址是IPv6寻址结构当中最重要的部分,该寻址结构使用了严格的路由前缀聚合,目的在于限制全球internet的路由表的规模。而一个IPv6地址是由提供商提供的48bit的路由前缀、组织机构使用16bit划分子网以及64bit接口标识符组成,如下图12.29 IPv6全球单播地址格式所示。
注意:接口标识符:指64bit的MAC地址(未来网络适配器的MAC地址),或者是基于48bit MAC地址扩展为64bit。在全球单播地址中,规定如2001:BCFF:FEA6::/48表示一个IPv6路由前缀,2001:BCFF:FEA6:6C01::/64表示一个IPv6子网前缀。
对于IPv6全球单播地址的配置,也有一定的规定和要求,其子网前缀必须为2000::/3,指的是在IPv6的前3bit,必须为二进制的001。而二进制换化为十六进制,需要4bit的二进制数,所以IPv6全球单播地址的从左到右的第一字段的变化范围为“0010”到“0011”,换化为十六进制变化范围就为2到3。那么如下图12.30所示,表示IPv6全球单播地址的范围。
IPv4过渡IPv6兼容地址
IPv4兼容IPv6地址是一种IPv4与IPv6网络的兼容过渡机制,用于在主机或者路由器上,自动创建IPv4隧道保证在IPv4网络上能传递IPv6数据包,如下图12.31所示。而IPv4过渡IPv6兼容地址格式主要由前缀高位为96bit二进制0组成,其它32比特以十进制的IPv4地址组成。如IPv4地址202.202.1.1对应的IPv4过渡IPv6兼容地址就应该为0000:0000:0000:0000:0000:0000:202.202.1.1(压缩后为::202.202.1.1)。如下图12.32所示。
IPv6基于EUI-64接口标识符地址
在前面的各种地址表示方法中多次提到64位扩展MAC填充地址、接口标识符等。在这里将详细讨论。IPv6地址中由于地址格式较长,且书写复杂,由于MAC本身就具备全球范围的唯一性,所以为了方便常常会利用接口的MAC地址来填充IPv6地址后64bit,但是现默认接口的MAC地址只有48bit,那么怎么去填充为64bit(EUI-64)的呢?如给出一个子网前缀为2001::/64,给出的MAC地址为ca00.02a8.0038,那么对应的IPv6地址应该是多少呢?请参考如下图12.33所示,怎么将48bit的MAC地址填充到IPv6的后64bit中的具体过程。
IPv6环回地址
IPv6环回地址类似于IPv4地址127.0.0.1,其作用在于测试本地设备的TCP/IP协议簇是否被正确安装,而通过该地址发出的数据是不会经过网络传输。而IPv6的环回地址全格式为0000:0000:0000:0000:0000:0000:0000:0001,压缩格式为::1。
IPv6未指定地址
IPv6未指定地址是指没有给任何接口分配单播地址,如当IPv6主机的IPv6地址是需要从DHCPv6获取,那么当IPv6主机向DHCPv6服务器发起地址请求或者由DAD(地址冲突检测)发出一个数据包时,所使用的源地址就为“IPv6未指定地址”。而该地址的全格式为0000:0000:0000:0000:0000:0000:0000:0000,压缩格式为::。
IPv6组播地址
IPv6组播地址类似于IPv4组播地址224.0.0.0/3,其作用是源节点发送单个数据包,而该数据包可以到达多个目标地址。
IPv6的任意播地址
任意播地址,也叫做泛播地址,是一个只能分配给路由的IPv6的地址。只能做通信的目标地址使用。而且严格的说,他是属于IPv6单播地址的一个集合,要非常明确的识别一个IPv6地址到底是单播地址还是任意播地址是不可能的。
对任意播地址的定义:指示从一个源节点发送数据包到任意播组中的最近节点的任意播地址,所以任意播也被称为最近点发现或最近路由发现。而最近点的发现则是通过如网络距离、路由选路等。最终到达最近目标地址。在IPv6中使用任意播地址的应用很少,移动IPV6技术的应用就必须使用任意播地址。但是这不是本书讨论的重点。
意注:在这里总结一下IPv6的地址分类:在IPv6的地址当中分为3种类型,即单播、任意播和组播,其中单播包含本地链路地址、本地站点地址、可聚合全球单播地址、环回地址、未指定地址和IPv4兼容地址。任意播地址包含可聚合全球单播地址、本地站点地址和本地链路地址,没有明确的概念去区分单播地址与任意播地址。