目录
【3.1.1】全局单播地址(GUA---Global Unicast Address)
【3.1.2.1】链路本地地址(LLA---Link-Local Address)
【3.1.2.2】唯一本地地址(ULA---Unique Local Address)
IPv6:是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 。
国际IP地址分配方式:

IPv6地址和IPv4地址对比

IPv6地址长度为128位,是IPv4地址长度的4倍。IPv4点分十进制格式不再适用,IPv6采用十六进制表示。
IPv6地址用冒号分隔为8段,每一段16位,每一段用十六进制表示。

与IPv4地址类似,IPv6也用"IPv6地址/掩码长度"的方式来表示IPv6地址,例如:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344/64
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16bit(16位二进制数),以十六进制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789/64
这种表示法中,每个X的前导0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A >> 2001:DB8:0:23:8:800:200C:417A
有时候一个IPv6地址中间可能连续多个0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
FF01:0:0:0:0:0:0:1101>>FF01::1101
0:0:0:0:0:0:0:1 >> ::1
0:0:0:0:0:0:0:0 >> ::
IPv4地址会嵌入IPv6地址中,表示格式为:X:X:X:X:X:X:d.d.d.d,即IP地址前96位采用IPv6冒分十六进制表示,IP地址最后32位使用IPv4点分十进制表示,例如:
::192.168.0.1
::FFFF:192.168.0.1
注意在前96位,前导0省略和压缩0位的方法依旧适用。
IPv6地址分为如下两部分:网络前缀+接口标识
示例:
2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64

鉴于IPv4地址在规划和分配上的局限性,IETF对IPv6地址类型进行了精细划分,不同类型的IPv6地址被赋予了不同的前缀,且受地址分配机构的严格管理。
现阶段常用的IPv6地址或前缀
| 特定前缀IPv6地址 | 含义 |
| 2001::/16 | 用于IPv6 Internet,类似于IPv4公网地址 |
| 2002::/16 | 用于6to4隧道 |
| FE80::/10 | 链路本地地址前缀,用于本地链路范围内的通信 |
| FF00::/8 | 组播地址前缀,用于IPv6组播 |
| ::/128 | 未指定地址,类似于IPv4中的0.0.0.0 |
| ::1/128 | 环回地址,类似于IPv4中的127.0.0.1 |
接口ID可以通过三种方式生成:
基于IEEE EUI-64的规范生成IPv6接口标识

转换算法:将第7位取反,即0变为1,或者1变为0,在MAC地址的中间(24bit处)插入两个字节:FFFE。
IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。
单播地址:用来唯一标识一个接口,发送到单播地址的数据报文将被传送给此地址所标识的一个接口。
组播地址:用来标识一组接口(通常这组接口属于不同的节点),发送到组播地址的数据报文被传送给此地址所标识的所有接口。
任播地址:用来标识一组接口(通常这组接口属于不同的节点),发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
IPv6地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:
| 地址类型 | 地址前缀(二进制) | IPv6前缀标识 | |
| 单播地址 | 未指定地址 | 00…0(128 bits) | ::/128 |
| 环回地址 | 00…1(128 bits) | ::1/128 | |
| 链路本地地址 | 1111 1110 10 | FE80::/10 | |
| 唯一本地地址 | 1111 110 | FC00::/7(包括FD00::/8和不常用的FC00::/8) | |
| 站点本地地址(已弃用,被唯一本地地址代替) | 1111 1110 11 | FEC0::/10 | |
| 全局单播地址 | 其他形式 | - | |
| 组播地址 | 1111 1111 | FF00::/8 | |
| 任播地址 | 从单播地址空间中进行分配,使用单播地址的格式 | ||
IPv6单播地址包括四个类型:全局单播地址、本地单播地址、兼容性地址、特殊地址。
也被成为可聚合全球单播地址,相当于IPv4中的公网地址,用于IPv6 Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。
注:由于全局单播地址前3bit固定为001,因此全球单播地址在用冒分十六进制表示时,是以2000或3000开头,如,2000:X:X:X:X:X:X:X或者3000:X:X:X:X:X:X:X
链路本地地址和唯一本地地址都属于本地单播地址,在IPv6中,本地单播地址就是指本地网络使用的单播地址。每个接口上至少要有一个链路本地单播地址,另外还可分配任何类型(单播、任播和组播)或范围的IPv6地址。
链路本地地址网络前缀为FE80::/10,仅用于单个链路(链路层不能跨网段),不能在不同子网中路由。结点使用链路本地地址与在同一个链路上的相邻结点进行通信。例如,在没有路由器的单链路IPv6网络上,主机使用链路本地地址与该链路上的其他主机进行通信。
注:由于链路本地地址前10bit固定为1111 1110 10,因此链路本地地址在用冒分十六进制表示时,是以FE8、FE9、FEA和FEB开头,如,FE80:X:X:X:X:X:X:X、FE90:X:X:X:X:X:X:X、FEA0:X:X:X:X:X:X:X或者FEB0:X:X:X:X:X:X:X
唯一本地地址网络前缀为FC00::/7,是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可路由,因此不能用于访问公网(Internet)。
注:由于唯一本地地址前7bit固定为1111 110,因此唯一本地地址在用冒分十六进制表示时,是以FC或FD开头,如,FC00:X:X:X:X:X:X:X或者FD00:X:X:X:X:X:X:X
IPv6组播地址可识别多个接口,对应于一组接口的地址(通常分属不同节点)。发送到组播地址的数据包被送到由该地址标识的每个接口。使用适当的组播路由拓扑,将向组播地址发送的数据包发送给该地址识别的所有接口。任意位置的IPv6节点可以侦听任意IPv6组播地址上的组播通信。IPv6节点可以同时侦听多个组播地址,也可以随时加入或离开组播组。
IPv6组播地址q前8位固定为1111 1111,即以FF开始的IPv6地址为组播地址。
组播地址由前缀(FF::/8)、标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成。最后112位为组ID( Group ID ),标识不同的组播组,前面的80位为0 ,只使用最后32位。

Flags(标记):第一位为零,格式为|0|r|p|t|,通常0000或者0001。
Scope(范围):4bit,标识传播范围。
发送组播数据包通常是单台设备,可以是组播组成员,也可以是其它主机,数据包的目的地址是组播地址。
被请求节点组播地址:当一个节点具有了单播和任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。被请求节点组播地址格式如下:

被请求节点组播地址的前104位是固定的,后24位根据单播地址的后24来进行填充。
例如:全球单播地址:2001:172:16:12::1
对应被请求节点组播地址为:FF02::1:FF00:01
其中FF02::1表示所有主机,FF02::2表示所有路由器。
如下示例:
PC1发送数据至PC2前,首先需要获取其MAC地址。PC1将发起类似IPv4中ARP的解析流程,IPv6使用ICMPv6的NS和NA报文来实现地址解析过程,NS报文的目的IPv6地址为目标IPv6单播地址对应的被请求节点组播地址。

组播IPv6报文的目的IP为组播IPv6地址,同样,目的MAC为组播MAC地址。组播MAC的前16bit为"33:33",是专门为IPv6组播预留的MAC地址前缀。后32bit从组播IPv6地址的后32bit直接映射而来。

在IPv6中没有广播的概念,但是有任播地址,它的范围和全球单播地址一致,只不过可以重复配置,无法根据地址判断是单播地址还是任意播地址。通过合适的路由拓扑,目的地址为任播地址的数据包将被发送到单个接口(该地址识别的最近接口,最近接口定义的根据是路由距离最近,而且当最近的路由器故障时,根据路由指向下一台最近的路由器。),一个任播地址绝不能用作IPv6数据包的源地址;也不能分配给IPv6主机,仅可以分配给IPv6路由器 。


IPv6报文一般由三个部分组成:


| 版本号 | 表示协议版本,值为6 |
| 流量类别 | 主要用于QoS |
| 流标签 | 用来标识同一个流里面的报文 |
| 载荷长度 | 包含扩展报头和数据部分的长度,最多可表示65535字节数,超过则置为0 |
| 下一报头 | 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法 |
| 跳数限制 | 该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃 |
| 源地址 | 标识该报文的来源地址 |
| 目的地址 | 标识该报文的目的地址 |

