IPv6基础
IPv6是互联网协议第6版的缩写,主要用来解决第四版IP地址资源不足的问题。
IPv6不是简单的延长了IP地址的位数,还重新定义了IP协议和相关的其它协议,所以IPv6不兼容IPv4。
我国正在大力推广IPv6的网络建设,现在国内的IPv6网络已经有了较大规模。
一些老旧设备不支持IPv6,在做IPv6实验时最好使用较新版本的模拟器。
本部分使用的模拟器是 Cisco Packet Tracer 7.2
IPv6地址
IPv6的地址长度为128位二进制数,采用“冒号十六进制”表示法。书写时分成8个段,每段4个十六进制数,用冒号分隔。
比如:
写作:2001:0DB8:0000:0023:0008:0800:200C:417A
这种写法中,每个段中的前导0可以省略。
可简化为:2001:DB8:0:23:8:800:200C:417A
IPv6地址的缩写
如果一个IPv6地址有多个“0”段,可以把多个连续的“0”段缩写为“::”。
比如:FF01:0:0:0:0:0:0:1101,可缩写为 FF01::1101。
注意:为保证地址解析的唯一性,地址中“::”只能出现一次。
比如:FF01:0:0:0:3:0:0:1101。
正确的缩写:FF01::3:0:0:1101 或 FF01:0:0:0:3::1101。
错误的缩写:FF01::3::1101。
“::”代表的“0”段数量 = 8-其它段数量
IPv6地址的划分
IPv6取消了子网掩码,改成用前缀长度分割IP地址。
写法是:IPv6地址/前缀长度
前缀长度指定了地址的前缀,相当于网络地址,后面的部分称为接口标识(接口ID),相当于主机地址。
比如:234e:0:4567::3d/64 表示地址的前64位(前4段)为网络前缀,后64位(后4段)为接口标识。
如果分开书写,则前缀地址写为 234e:0:4567::/64,接口地址写为 ::3d/64。
同一网络(同一链路)
在设计网络时,同一网络要求设备的网络前缀相同(网络地址相同),接口标识不同(主机地址不同)。
大部分情况下,IPv6地址的划分都是 64-64 的划分方式。
IPv6地址的种类
IPv6的地址种类很多,掌握难度也比较大,初学者主要掌握以下几种地址。
特殊地址:
::/128:该地址为全0,表示“未指定地址”。
::1/128:该地址的最后一位为1,其它全为0,用作环回地址,与IPv4的 127.0.0.1 作用相同,表示“本机”。
全球单播地址
相当于IPv4的公有地址,由网络服务商提供。
目前已分配全球单播地址的最高3位都是“001”,所以我们看到的全球单播地址基本上都是以数字“2”开头的。
比如:2000:DB8:CAFE:1::8/64 是一个全球单播地址。
链路本地地址(FE80::/10)
IPv4没有这种地址,它通常是自动生成的,不需要配置。
这种地址的最高10位为“1111111010”,只能在连接到同一链路的节点之间使用。
比如:FE80::201:43FF:FE54:79BD/64 是一个链路本地地址。
唯一本地地址(FC00::/7)
相当于IPv4的私有地址,用于组建私有局域网,由管理员自行规划使用。
这种地址的最高7位为“1111110”,使用时用 “FC00” 开头,称为唯一本地地址。
这种本地地址只能在本地网络内部被路由转发而不能在全球网络中被路由转发。
组播地址(FF00::/8)
相当于IPv4中的D类地址,用于组建组播组。
这种地址的最高8位为“11111111”,都是以 “FF” 开头的。
IPv6取消了广播地址,广播功能也都是通过组播实现的。
通常情况下组播地址不需要配置,当设备配置了IPv6地址后,会自动加入相应组播组,并可同时拥有多个组播地址。
常见的组播地址有:FF02::1 - 本地链路范围的所有主机,FF02::2 - 本地链路范围的所有路由器。
任播地址
任播是IPv6新增的一种传输方式,IPv4中没有任播。
任播地址可标识一组设备,用来给功能相同的多个节点提供冗余功能和负载均衡。
任播地址只能配置在路由设备上,只能作为目的地址使用。
目标地址是任播地址的数据报将发送给其中路由意义上最近的一个网络接口。
任播地址没有指定单独的地址空间,可使用单播地址作为任播地址,把它配置在多个节点设备上。
IEEE EUI-64规范
IPv6地址中的接口标识可以指定,也可以自动生成。IEEE EUI-64规范规定了用接口MAC地址生成接口标识的方法。
MAC地址长度为48位二进制数,而接口标识通常为64位二进制数,生成方法:
在MAC地址的前24位和后24位间插入FFFE。
把第7位二进制数设置为1。
比如:MAC地址为 000E-0C82-C4D4
在中间插入FFFE后,变为 000E-0CFFFE82-C4D4。
00的第7位设置为1后变为02(0000 0000 → 0000 0010)。
得到64位的接口标识为:020E:0CFF:FE82:C4D4
在这个接口标识前面加上64位长度的网络前缀就是一个完整的IPv6地址。
MAC地址 → EUI-64地址
MAC地址:××××.××××.××××
EUI-64地址:020E:0CFF:FE82:C4D4
IPv6临时地址
使用EUI-64规范生成的接口地址会暴露用户的MAC地址,使用户在网络中的通信行为变得可被跟踪,侵犯了用户的隐私。
临时地址由“网络前缀+随机生成的接口标识”组成,而且有一定的生存期,生存期过后会生成新的接口标识。
Windows下的主机使用的就是临时地址,它的接口标识不是用MAC地址生成的。
链路本地地址(Link Local Address)
链路本地地址的结构:
链路本地地址的网络前缀是FE80::/64,接口标识使用EUI-64规范由MAC地址自动生成,也可以是随机生成的临时地址,不需要配置。
比如:某网卡的MAC地址为 000A.F3D0.3C0B,则它的链路本地地址为 FE80::20A:F3FF:FED0:3C0B。
链路本地地址不能被路由,也不能跨VLAN,只能在本地网络中使用。
用链路本地地址组网
这种网络不需要配置,可直接通信。
在模拟环境中:
在设备的网卡接口上可看到链路本地地址,它是由MAC地址生成的:

用ping命令可测试网络的连通性:

在客户端可以访问Web网站:

链路本地地址的作用
用链路本地地址只能组建单一的网络,且不能连接其它网络,用它来组网没有实用性。但链路本地地址是很有用的一种地址。
链路本地地址可作为网关使用,用来标识网络的出口。
链路本地地址可作为路由的下一跳地址。
由于链路本地地址不会随着接口地址的变化而变化,具有很好的稳定性,用它作为目标地址也可提高网络的稳定性。