IPv6 Address

Reserved

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

任播地址

任播地址没有特殊前缀,与公网单播地址范围相同。
意思是多个设备配置一个相同的地址,由路由器选择最近的一个去通信。