https://info.support.huawei.com/info-finder/encyclopedia/zh/IPv6.html

什么是IPv6地址?
IPv6地址由网络前缀和接口标识两个部分组成。网络前缀有n位,相当于IPv4地址中的网络ID;接口标识有(128-n)比特,相当于IPv4地址中的主机ID。

地址2001:A304:6101:1::E0:F726:4E58的构成示意图
IPv6地址长度为128位,表示为”X:X:X:X:X:X:X:X”, 每个X代表4个十六进制值字符,以冒号分隔,一共被分为8组。为了书写方便,例如,IPv6地址:FC00:0000:130F:0000:0000:09C0:876A:130B,还可以写为缩略形式:每组中的前导“0”都可以省略,可写为:FC00:0:130F:0:0:9C0:876A:130B。如果地址中包含连续两个或多个均为0的组,可以用双冒号“::”来代替,进一步简写为:FC00:0:130F::9C0:876A:130B。
但是,由于无法在短时间内将网络中的全部系统从IPv4升级到IPv6。最有效的过渡方案便是IPv6地址支持内嵌IPv4地址。原先的IPv4地址由32位二进制数值组成,但为了便于识别和记忆,采用了”点分十进制表示法”。表示为”d. d. d. d”,其中每一个d代表一个十进制整数, 以点分号分隔,一共有4个整数。现在,IPv4地址转变为了一种特殊形式的IPv6地址:”X:X:X:X:X:X:d.d.d.d” , 其中”X:X:X:X:X:X”的前80位设为0,后16位设为1,然后再跟IPv4地址。例如,IPv4地址是192.168.0.1,那么嵌入在IPv6协议中呈现的地址为 ::FFFF:192.168.0.1。
需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。
接口标识可通过三种方法生成:手工配置、系统通过软件自动生成或IEEE EUI-64规范生成。其中,EUI-64规范自动生成最为常用。
将接口的MAC地址转换为IPv6接口标识的过程。这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。
IPV6 地址的分类
IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。
IPV6单播地址
IPv6定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。
- 1、未指定地址IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
- 2、环回地址IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。
- 3、全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成,

有0010 0011 转换成16进制 就是2 或者3
4、链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。

以链路本地地址为源地址或目的地址的 IPv6 报文不会被路由设备转发到其他链路。
5、唯一本地地址:唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。

6、唯一的本地 IPv6 单播地址(ULA,Unique Local IPv6 Unicast Address)
在 RFC4193 中标准化了一种用来在本地通信中取代单播站点本地地址的地址。ULA 拥有固定前缀 FD00:/8,后面跟一个被称为全局 ID 的 40bit 随机标识符。
IPv6组播地址
IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点
FF00::/8 为前缀
IPv6任播地址
IPv6任播地址仅可以被分配给路由设备,不能应用于主机。任播地址不能作为IPv6报文的源地址。
IPv6 报文结构

基本首部和扩展首部
示例:2001:0db8:0000:0000:0000:0:02:8329 。
为方便起见,可以通过应用以下规则将 IPv6 地址缩写为较短的符号。
从任何十六进制数字组中删除一个或多个前导零;通常对全部或全部前导零进行此操作。例如,组 0042 被转换为 42 。
零的连续部分用双冒号(:)替换。双冒号只能在地址中使用一次,因为多次使用会使地址不确定。
例子:
地址:2001:0db8:0000:0000:0000:0000:2:8329
删除每组中的所有前导零后:2001:db8:0:0:0:f100:42:8329
省略连续的零部分后:2001:db8:: ff0:42:8329
IPv6中的扩展首部
IPv6协议明确支持扩展首部的概念,这些扩展首部被放置在IPv6基本首部之后,并且在需要时可以添加多个扩展首部。IPv6扩展首部的使用更加灵活和强大。
在 IPv6 首部中有一个“下一头部”字段,若 IPv6 分组没有扩展首部,则其“下一头部”字段中的值为 TCP 或 UDP,
这是因为在没有扩展首部的情况下,IPv6 分组通常承载的是上层协议的数据,如 TCP 或 UDP 。
例如,如果 IPv6 分组承载的是 Web 页面请求的数据,那么“下一头部”字段的值可能就是 TCP;如果是实时音频流数据,可能就是 UDP 。
IPv6扩展首部类型
IPv6扩展首部包括但不限于以下几种:
- 逐跳选项首部 (Hop-by-Hop Options Header)
- 该首部包含适用于数据包经过的所有节点的信息。
- 用于实现特定的功能,如调试、测量、认证等。
- 逐跳选项首部必须紧接在IPv6基本首部之后。
- 目的地选项首部 (Destination Options Header)
- 该首部包含仅适用于最终目的地节点的信息。
- 可以用于传输到达目的地之前的特定信息,如认证数据等。
- 可以在数据包的开始位置或结束位置出现,取决于其作用域。
- 路由首部 (Routing Header)
- 该首部允许数据包沿着指定的路径传输,而不是通过正常的路由机制。
- 可以用于实现源路由或中间节点路由。
- 路由首部可以出现在IPv6基本首部之后,也可以放在目的地选项首部之后。
- 分段首部 (Fragment Header)
- 该首部用于分割大的IPv6数据包以适应较小的MTU(最大传输单元)。
- 包含分割后的数据包的标识符和偏移量等信息。
- 认证首部 (Authentication Header, AH)
- 用于提供数据包完整性和数据源认证。
- 可以提供无连接完整性保护、数据来源验证和防重放攻击。
- 封装安全负载首部 (Encapsulating Security Payload, ESP)
- 用于提供数据包的加密和完整性保护。
- 可以用于实现IPSec(Internet Protocol Security)。
- 流标签首部 (Flow Label)
- 用于标识属于同一流的数据包。
- 可以用于提供QoS(Quality of Service)保证。
扩展首部的顺序
IPv6扩展首部的顺序很重要,因为它们决定了数据包如何被处理。通常的顺序如下:
- IPv6基本首部
- 逐跳选项首部(如果存在)
- 路由首部(如果存在)
- 目的地选项首部(如果存在)
- 分段首部(如果存在)
- 认证首部(如果使用AH)
- 封装安全负载首部(如果使用ESP)
- 上层协议首部(如TCP或UDP)
Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为 48 位。目前已经分配的全球路由前缀的前 3bit 均为 001。
Subnet ID:子网 ID。组织机构可以用子网 ID 来构建本地网络(Site)。子网 ID 通常最多分配到第 64 位。子网 ID 和 IPv4 中的子网号作用相似。
Interface ID:接口标识。用来标识一个设备(Hos)。
IPv6相对IPv4的优势主要包括以下几点:
- 更大的地址空间:
- IPv4使用32位地址,理论上可以提供约43亿个唯一IP地址。
- IPv6采用128位地址格式,提供了大约3.4×10^38个地址,几乎是一个无限的地址空间。这解决了IPv4地址耗尽的问题,并为未来互联网的发展预留了足够的地址资源。
- 改进的安全性:
- IPv6在设计时就内置了对IPSec(Internet Protocol Security)的支持,这是一种网络层安全协议,用于保证数据传输的安全性和完整性。虽然IPv4也可以通过额外配置支持IPSec,但在IPv6中它是标准的一部分。
- 更好的头部结构:
- IPv6的包头比IPv4更简单且固定长度,减少了处理开销并提高了路由器的转发效率。
- IPv6取消了IPv4中的某些字段,如校验和,这些功能现在由上层协议来实现,从而简化了包头处理。
- 无状态地址自动配置(SLAAC):
- IPv6设备可以通过邻居发现协议(NDP)自动配置自己的IP地址和其他参数,而不需要DHCP服务器或其他手动配置。这简化了网络管理,并促进了即插即用能力。
- 移动性支持:
- IPv6原生支持移动IPv6(MIPv6),它允许节点在不同网络间移动时保持连接不中断,这对于无线设备尤其重要。
- 增强的多播支持:
- IPv6多播机制更加高效,定义了更多的多播地址范围,支持“范围”和“标志”,使得多播应用更为广泛且易于部署。
- 简化的分片机制:
- 在IPv6中,只有源主机负责执行分片,中间路由器不再需要进行分片操作。这减少了路由过程中的复杂性,提高了效率。
- 服务质量(QoS):
- IPv6提供了流量类别和流标签字段,可以帮助区分不同类型的数据流,为实时应用(如语音和视频)提供优先级服务。
- 无需NAT(网络地址转换):
- 由于IPv6拥有庞大的地址空间,通常不再需要NAT来扩展私有网络到公共互联网的连接,从而避免了与NAT相关的复杂性和潜在性能问题。