目录
一、IPv6地址介绍
IPv6地址长度是128bit,一般使用冒号分割为8段,每一段16bit,每一段内用16进制表示。
举例:如何将16进制数2001转换为2进制数?
2----0010、0-----0000、0-----0000、1-----0001
故16进制数2001转换为2进制数就是0010000000000001
二、IPv6地址格式
三、IPv6地址简写方式
①每段前导的0可以省略,如果该段都为0,则至少保留一个0,但是该段末尾的0不可以省略。
举例:0100:00df:0000:00f0::
其中0100中1前面的0就是前导的0,此时可以省略;
00f0中f后面的0就是末尾的0,该0是不可以省略的。
上述字段就可以简写为:100:df:0:f0::
②一个或者多个连续段全为0时,可以用::表示,但是整个ipv6地址中只允许出现一次::
举例:2001:0db8:0000:0001:0000:0000:0000:45ff
可以简写为:2001:bd8:0:1::45ff=====2001:bd8::1:0:0:0:45ff
不可以简写为:2001:bd8::1::45ff
问题:为什么不可以出现爽冒号?
答案:如果双冒号出现在IPv6地址中,需要对其进行补全时,不知道哪一个双冒号代替的那几段。
四、IPv6地址前缀介绍
五、IPv6地址类型
5.1 单播IPv6地址
5.1.1 全球单播地址(GUA)
前3bit恒定不变001,并不是代表网络位是3
取值范围:2000::/3----3FFF::/3
全球单播地址由全球路由前缀(Global routing prefix,48bit)、子网ID(subnet ID,16bit)、和接口标识(interface 路由前ID,64bit)组成。
一个接口可以用多个GUA地址,可以属于相同子网,也可以属于不同子网。
一个简单的记忆方式称为pi法则:
①3:代表全局路由前缀的3个16位组,即48bit;
②1:代表子网ID是一个16位组,即16bit;
③4:代表接口ID是4个16位组,即64bit;
注意事项:该法则对于/48位全局路由前缀和64bit接口ID来说总是非常有用,这也是目前通用的前缀分配方式,需要注意的是,全局前缀和接口ID并不必须是48bit和64bit。
5.1.2 唯一本地地址(ULA)
前7bit恒定不变,即1111 110X
取值范围:FC00::/7----FDFF::/7
5.1.3 链路本地地址(LLA)
上图中的54bit为0,只是表示自动生成是该54bit为0,并不代表一定要为0,手动配置时可以自己指定。
启用了IPv6功能的接口总是会自动生成一个LLA地址,用于实现链路上的通信;为接口配置一个GUA/ULA地址,接口也会自动生成一个LLA地址。
前10bit恒定不变位:11111110 10XX
真正的取值范围是:FE80::/10-----FEBF::/10
设备默认产生的链路本地地址就是FE80开头的
链路本地地址(link-local):让IPv6具有在链路上三层通信的能力,从而在链路上实现必须得功能,不用借助其它协议的辅助。
链路本地地址不具备路由能力;
链路本地地址ping时需要指定接口,否则设备无法识别用哪个接口发包。
举例:在R1和R2上面手工指定链路本地地址,并在R1上面ping测R2的本地链路地址时分别跟出接口和不跟出接口观察现象,
不带出接口时显示内容:
带出接口时可以正常访问:
抓包查看源目地址信息:
(4)未指定地址
0:0:0:0:0:0:0:0/128 或者::/128
(5)环回地址
0:0:0:0:0:0:0:1/128 或者::1/128
与IPv4中的127.0.0.1作用相同,用于本地回环,发往::/1的数据包实际上就是发给本地,可用于本地协议栈回环测试
5.2 IPv6组播地址
5.2.1 IPv6组播地址
前8bit恒定为11111111
Flag:目前是用到2种组合方式,0000---永久组播地址、0001---临时组播地址
Scope:大小为4bit,取值范围0000---1111
中间80bit保留暂未使用,但是取值必须为全0
5.2.2 IPv6组播MAC地址
举例:在接口上开启OSPFV3,抓包查看接口发送的hello报文的目的IPv6地址和目的MAC地址
5.2.3 被请求节点组播地址
作用:①邻居发现 ②地址重复检测
被请求节点组播地址前104bit大小固定,后24bit从IPv6地址的后24bit复制而来。
举例:为R1配置一个IPv6的GUA地址和LLA地址,观察加入的组播组和对应的被请求节点组播地址。
六、IPv6接口ID生成方式
接口ID(interface id)是本地唯一的
6.1 手工配置
手工为某一个启用了IPv6功能的设备配置一个IPv6单播地址
举例:比如上级部分分配一个IPv6地址是2001:1:1:1::/64,该地址说明接口标识(主机位)全为0,则可以使用的地址范围是:
2001:1:1:1::-----2001:1:1:1:ffff:ffff:ffff:ffff
6.2 系统自动生成
Windows和linux系统会自动生成一个interface id,由各自的算法自动生成;
举例:查看windows系统自动生成的接口id信息
6.3 EUI-64方式生成
EUI-64就是利用设备接口MAC地址生成接口ID信息
注意事项:MAC地址第7bit转换机制
如果MAC地址第7bit是0,则变为1;如果MAC地址第7bit是1,则保持不变(也可能变为0,主要取决于厂家的实现方式)。
一般网络设备(路由器、交换机、防火墙等)生成接口id时就是使用eui-64方式将接口MAC地址变为IPv6地址的接口ID。
举例:比如为一台路由器配置一个IPv6的本地链路地址,地址生成方式为自动获取,观察该link-local地址和MAC地址之间的关联。
将上述的link-local地址接口id还原成MAC地址,然后和设备接口IP地址比较
02E0:FCFF:FEBB:4210------其中02E0写成2进制就是0000001011100000
MAC地址是还原就是将第7bit取反,然后删除中间插入的FFFE
故MAC地址就是:00E0-FCBB-4210