IPv6 Address表示方法
使用8块4位16进制数表示IPv6地址, 共8块,每一块包括4位16进制数字。
如: 2001:0001:0001:0001:0001:0001:0001:0001
共128位
可以省略前导0 如: 2001:1:1:1:1:1:1:1
也可以省略全0的块 如: 2001:0001:0000:0000:0000:0000:0000:0002 –> 2001:0001::0002 但是只能省略一组全0的块(最长的一组,或者第一个组)
ipv6-address/prefix-length(地址/前缀长度)
2001:0001::0001/64 前缀长度64,后面64位是接口ID(对应IPv4中的主机地址)
IPV6单播地址
单播地址--------公网单播地址 2000::/3
|
|--本地链路单播地址 fe80::/10
|
|--本地唯一单播地址 fc00::/7
|
|--loopback ::1/128
|
|--未指定地址 ::/128
|
|--嵌入IPv4地址的IPv6地址 ::/80
IPv6地址开头的位 | IPv6地址空间 | 首个16位组的范围 | 分配情况 | 地址空间的占比情况 |
----------------------------------------------------------------------------------------------------------------
000x 0000 - 1fff 1/8
00000000 0000::/8 0000 - 00ff IPv6未指定地址
loopback地址
嵌入IPv4地址的IPv6地址 1/256
00000001-0001xxxx 0000::/3 0010 - 1fff IETF预留
001x 2000::/3 2000 - 2fff 公网单播地址 1/8
010x 4000::/3 4000 - 5fff IETF预留 1/8
011x 6000::/3 6000 - 7fff IETF预留 1/8
100x 8000::/3 8000 - 9fff IETF预留 1/8
101x a000::/3 a000 - bfff IETF预留 1/8
110x c000::/3 c000 - dfff IETF预留 1/8
111x 1/8
1110xxxx e000::/4 e000 - efff IETF预留 1/16
11110xxx f000::/4 f000 - f7ff IETF预留 1/32
111110xx f800::/4 f800 - fbff IETF预留 1/64
1111110x fc00::/7 fc00 - fdff IPv6本地唯一单播地址 1/128
111111100 fe00::/9 fe00 - fe74 IETF预留 1/512
1111111010 fe80::/10 fe80 - febf 本地链路单播地址 1/1024
1111111011 fec0::/10 fec0 - feff IETF预留,之前是本地站点地址 1/1024
11111111 ff00::/8 ff00 - ffff IPv6多播地址 1/256
公网单播地址
Global Unicast Address 在公网上随意穿行
公网路由前缀(ISP分配)--子网id--接口id
2000:1::1/64
本地链路地址
Link-local address
局域网内使用的地址
1111 1110 10xx xxxx -- 54位 -- 64位接口id
要让设备支持ipv6,就必须让其获得本地链路地址
本地链路地址的数据包本能被路由
一个接口只能有一个本地链路单播地址
一个设备的多个接口可以使用相同的本地链路地址,如果他们在不同的链路中。
本地链路地址可以自动配置(一般情况下,系统会自动配置),也可以手动配置。
设备在获得GUA之前,可以使用本地链路地址在局域网内通信
设备会把路由器的本地链路地址设置为默认网关
动态路由协议的源地址是本地链路地址
路由表中通过动态路由协议获取的路由的下一跳地址一定是本地链路地址
54位最好全0
根据EUI-64生成接口ID:
1.将mac48位2进制一分为2,左边24,右边24
2.中中间插入fffe
3.反转第七位
注意本地链路地址的区域,因为可能两个接口使用相同的本地链路地址,所以需要用区域加以区分。
loopback
::1/128
未指定单播地址
::/128
当IPv6主机发出源地址是未指定单播地址的数据包时,表明它的IPv6地址暂缺
未指定单播地址不能作为目的地址
未指定单播地址在DAD检测中作为ICMPv6消息的源地址
本地唯一单播地址
类似于私网地址,只能在私有网络内使用,不能在公网上路由。
1111110 -- L -- 40位全网ID -- 16位子网ID -- 64位接口ID
使用某种算法生成全网ID可以保证地址全网(整个Internet)不冲突。
使用本地唯一单播地址的好处是,在更换ISP的情况下,客户的网络不必重新编址。
嵌入IPv4地址的IPv6地址
链接IPv6孤岛
80位0 -- ffff -- w.x.y.x
IPv6多播地址
多播地址--------公认多播 ff00::/12
|
|--临时多播 ff10::/12
|
|--请求节点多播 ff02:0:0:0:0:1:ff00::/104
1111 1111 -- 4位0,R,P,T标记 -- 4位范围 -- 112位群ID
范围:
0 预留,
1 本地接口范围
2 本地链路范围
3 单播前缀范围
4 本地管理范围
5 本地站点范围
6 未分配
7 汇聚点范围
8 本单位范围
9 到D未分配
E 公网范围
F 预留
当T位==0时,表示永久多播地址包括众所周知的多播地址和请求节点多播地址
当T位==1时,表示非永久多播地址,就是应用程序用的多播地址
众所周知的多播地址:
ff02::1 : 所有IPv6设备
ff02::2 : 所有IPv6路由器
ff02::5 : 所有OSPFv3路由器
ff02::a : 所有EIGRP路由器
恳求节点多播地址
solicited-node multicast address
IPv6设备会为接口的每一个公网单播地址,本地链路单播地址,本地唯一单播地址自动创建一个请求节点多播地址。
恳求节点ip的生成:在前缀ff02:0:0:0:0:1:ff/104后面添加IPv6单播地址的后24位。
ipv6组播mac的生成: 33-33-组播ip后32位
借助恳求节点多播地址,IPv6设备可以更高效的执行某些任务,比如地址解析,DAD。
有了恳求节点多播地址,网卡可以过滤掉不必要的组播消息。
地址解析:
发出目的地址为目的IP对应的恳求节点地址的邻居恳求消息。
DAD:
发出目的地址为本地恳求节点多播地址的邻居恳求消息,来确定是否有其他机器使用本机的地址。
MLD
Multiast Listener Discover == IGMPv4
任播地址
任播地址没有特殊前缀,与公网单播地址范围相同。
意思是多个设备配置一个相同的地址,由路由器选择最近的一个去通信。
上篇Tun