IPv6地址格式及地址配置方式
一个典型的IPv6主机单播地址由3部分组成:全局路由前缀、子网ID和接口ID(64位)。全局 路由前缀用来识别分配给一个站点的一个地址范围。子网ID也称为子网前缀,一个子网ID与 一个链接相关联,以识别站点中某个链接。接口ID用来识别链接上的某个接口,在该链接上是唯一的。
IPv6地址配置可以分为手动地址配置和自动地址配置2种方式。自动地址配置方式又可以分为无状态地址自动配置和有状态地址自动配置2种。在无状态地址自动配置方式下,网络接口接收路由器宣告的全局地址前缀,再结合接口ID得到一个可聚集全局单播地址。在有状态地址自动配置的方式下,主要采用动态主机配置协议(DHCP),需要配备专门的DHCP服务器,网络接口通过客户机/服务器模式从DHCP服务器处得到地址配置信息。
接口ID的生成
在无状态地址自动配置方式下,接口ID通常可以通过EUI64转换算法得到。接口ID由48位MAC地址转换得到。EUI64是IEEE定义的一种基于64位的扩展惟一标示符。他是IEEE指定的公共24位制造商标示和制造商为产品指定的40位值的组合。在IPv6地址中,接口ID的长度为64位,他由48位的以太网MAC地址转换得到,下面介绍EUI64转换算法。
48位以太网MAC地址的格式固定为:
其中,c位表示厂商ID,m位表示厂商编号ID,g位表示是单个主机还是某个组。转换算法需将g位前的一位求反,并在c位和m位(MAC地址的第3和第4个字节)之间插入2个字节FFFE,则接口ID为:
Windows XP下主机地址自动配置示例如图1所示。
(1) Linklayer address是MAC地址(000795 1a0669)。
(2) preferred linklocal通过自动配置得到主机链路本地地址。其中,fe80是链路本地地址的固定前缀,207:95ff:fe1a:669为从MAC地址转换得到的接口ID。
全局路由前缀的获得
网络节点为获得他的全局路由前缀,向与他相连的路由器发出路由器请求RS(Router Solic itation)消息,网络上捕获的路由器请求消息如图2所示。
该RS消息的类型字段值133,表明这是一个路由器请求消息,消息的源地址是网络节点的本 地链路地址,由于这是一个路由器请求消息,目的地址是FF02::2(所有路由器多播地址)。
路由器收到网络节点的RS消息后,向该节点回送路由器宣告RA(Router Advertisement)消 息。RA消息如图3所示。RA消息的源地址是路由器的IPv6地址,目的地址是网络节点的本地 链路地址,消息的类型字段值134,表明这是一个路由通告消息,消息的选项字段给出全局 路由前缀1::。网络节点在获得全局路由前缀后,与接口ID结合形成他的全局IPv6地址。至 此,网络节点的无状态地址自动配置过程结束。
结语
使用EUI 64转换算法得到的接口ID是随机器硬件固定的,也是全局惟一的。该算法实现简单,是一种重要的接口ID自动生成算法,目前Windows,Linux操作系统在对主机生成接口ID时,均使用EUI 64转换算法。作为对该算法的一种改进,RFC3041又引入了一种随机地址机制,他包含了用一组随机数字代替由MAC地址转换的接口ID。该地址具有一定的生存周期,随着生存周期的结束,该地址会自动更换,较好地解决了节点的Internet访问活动被跟踪的问题。