ipv6协议

一、核心协议层(IPv6 主体)

这些是 IPv6 协议栈的基础。

协议全称作用
IPv6(RFC 8200)Internet Protocol version 6定义 IPv6 的数据包结构、地址格式、分片、头部字段等。
ICMPv6(RFC 4443)Internet Control Message Protocol for IPv6IPv6 的控制消息协议(类似 IPv4 的 ICMP),用于错误报告、邻居发现等。
NDP(RFC 4861)Neighbor Discovery Protocol取代 ARP,用于地址解析、路由器发现、邻居可达性检测。
MLD(RFC 2710 / 3810)Multicast Listener Discovery管理主机加入/离开 IPv6 多播组,类似 IPv4 的 IGMP。

二、地址分配与配置(自动化机制)

协议全称作用
SLAAC(RFC 4862)Stateless Address Autoconfiguration主机根据路由器广告(RA)自动生成地址(无状态)。
DHCPv6(RFC 8415)Dynamic Host Configuration Protocol for IPv6服务器分配 IPv6 地址和其他配置(有状态)。
DHCPv6-PD(RFC 8415 §6.3)Prefix Delegation向下游路由器分配子网前缀(常用于家庭宽带和v6plus)。
RA(Router Advertisement)Router Advertisement Message路由器广播前缀信息、DNS信息等,供主机生成地址。
RS(Router Solicitation)Router Solicitation Message主机主动请求路由器发送 RA。

三、安全与认证协议

协议全称作用
IPsec(RFC 4301+)Internet Protocol SecurityIPv6 内建安全框架,支持加密与认证。
IKEv2(RFC 7296)Internet Key Exchange v2为 IPsec 建立安全会话。
SEND(RFC 3971)Secure Neighbor Discovery给 NDP 加上签名与认证,防止伪造邻居攻击。

四、DNS 相关扩展

协议全称作用
AAAA Record(RFC 3596)IPv6 Address RecordIPv6 对应的 DNS 记录类型。
DNS64(RFC 6147)DNS IPv6/IPv4 互通将 IPv4 地址合成为 IPv6 地址(配合 NAT64)。
DNS over IPv6(RFC 3646)DNS over IPv6 transport在 IPv6 网络中直接查询 DNS。

五、过渡与兼容机制(IPv4 ↔ IPv6)

协议 / 技术作用
Dual Stack主机同时启用 IPv4 和 IPv6。
6to4(RFC 3056)IPv6 over IPv4 自动隧道(已淘汰)。
6rd (RFC 5969)IPv6 over IPv4 IPv4 网络上快速部署 IPv6 的过渡机制
ISATAP(RFC 5214)IPv6 over IPv4 内网自动隧道。
Teredo(RFC 4380)IPv6 over UDP over IPv4 穿透 NAT(已淘汰)。
DS-Lite Tunnel(RFC 6333)IPv6-only 网络访问 IPv4。
NAT64/NAT46(RFC 6146)IPv6/IPv4 地址转换。
464XLAT(RFC 6877)Android 移动网络常用的 NAT64/CLAT 模式。
MAP-E / MAP-T(RFC 7597/7599)IPv4 over IPv6 映射机制(ISP 常用)。
v6plus / OCN IPv6日本主流的 MAP-E 实现。

六、路由与传输层扩展

协议作用
OSPFv3(RFC 5340)IPv6 的 OSPF 协议版本。
RIPng(RFC 2080)IPv6 的 RIP 路由协议版本。
BGP-4+(RFC 2545)支持 IPv6 的 BGP。
EIGRP for IPv6(Cisco)Cisco 的私有 IPv6 路由协议版本。
ICMPv6 Redirect / Router Renumbering(RFC 2894)动态更新路由前缀信息。

七、扩展头与功能增强

扩展头功能
Hop-by-Hop Options Header每跳都要处理的选项(如 Jumbogram)。
Routing Header类似 IPv4 的源路由。
Fragment Header分片控制(仅源节点能分片)。
Destination Options Header目的节点的额外选项。
Authentication / ESP HeaderIPsec 相关。
Mobility Header(RFC 6275)移动 IPv6 的移动性支持(Mobile IPv6)。

八、特殊功能与改进型协议

协议 / 技术作用
Mobile IPv6(RFC 6275)主机在移动网络间保持固定 IPv6 地址。
MIPv6 / PMIPv6 / NEMO各类移动性扩展。
Segment Routing over IPv6(SRv6)新一代基于 IPv6 的路由控制技术(SDN 常用)。
RDNSS / DNSSL(RFC 8106)通过 RA 下发 DNS 配置。
Flow Label(RFC 6437)流量识别标签,用于 QoS。
Jumbogram(RFC 2675)支持超过 65535 字节的 IPv6 大包。

九、总结图(知识结构)

IPv6
├── 核心协议:IPv6, ICMPv6, NDP, MLD
├── 地址配置:SLAAC, DHCPv6, DHCPv6-PD, RA
├── 安全机制:IPsec, IKEv2, SEND
├── DNS扩展:AAAA, DNS64, RDNSS
├── 过渡技术:NAT64, 464XLAT, MAP-E, DS-Lite
├── 路由协议:OSPFv3, RIPng, BGP-4+
├── 扩展头部:Routing, Fragment, ESP, AH
├── 特殊功能:SRv6, MIPv6, Flow Label, Jumbogram
└── 应用层支持:DNS over IPv6, HTTP/3 over IPv6

ipv6地址

IPv6

ipv6地址分类

一、IPv6 地址的三大类型(按功能划分)

类型名称特点举例
单播 (Unicast)一对一通信表示网络中唯一的接口2001:db8::1, fe80::1
组播 (Multicast)一对多通信表示一组节点ff02::1, ff02::2
任播 (Anycast)一对最近通信多个节点共用一个地址,路由选择最近者通常分配给多个服务器的相同接口

二、单播地址的常见类型

IPv6 的单播地址主要分为以下几类

地址类型前缀用途特点
全局单播 (Global Unicast)2000::/3(即 2000–3fff)公网可路由地址(类似 IPv4 的公网 IP)唯一且可跨 Internet 路由
链路本地地址 (Link-Local)fe80::/10同一链路内通信(邻居发现、RA/RS)自动生成,不能跨网段路由
唯一本地地址 (Unique Local Address, ULA)fc00::/7(常用 fdxx::/8)内网使用(类似 IPv4 私有地址)不可公网路由,可在本地或 VPN 使用
环回地址 (Loopback)::1/128本机测试用(类似 IPv4 的 127.0.0.1)仅在本地主机使用
未指定地址 (Unspecified)::/128表示“无地址”,用于启动阶段(如 DAD)不能作为通信源/目的
链路本地前缀(本地链路段)fe80::/64(通常)每个接口自动配置通常基于 MAC/EUI-64 或随机生成
IPv4 映射地址 (IPv4-mapped IPv6)::ffff:192.168.1.1IPv6-only 环境中表示 IPv4 地址用于 IPv4/IPv6 互操作
IPv4 兼容地址 (IPv4-compatible)已废弃::192.168.1.1旧标准,现不再使用

Link-Local 和 ULA 不冲突,因为它们的用途完全不同、作用范围不同、甚至通信逻辑也不同。

Link-local 是“链路通信地址”,ULA 是“站点通信地址”。

  • Link-local:设备在一个网段内通信、发现邻居、找路由器。
  • ULA:设备在**整个局域网(可跨多个网段)**内部通信。 Link-local地址是自生成的,只要设备启动了IPv6就会有link-local地址,然后才能获取其它地址。

不一定固定,但通常是稳定的。

  • 它是根据网卡接口标识(Interface Identifier, IID) 自动生成的。
  • IID 通常取决于网卡的 MAC 地址,或者系统为隐私生成的随机值。 因此:
  • 如果设备的 MAC 地址不变、算法一致 → Link-local 地址基本不会变。
  • 如果启用了 隐私扩展(Privacy Extension) 或系统策略改变 IID 生成方式 → 地址可能不同。
| 10 bits | 54 bits | 64 bits |
| Prefix  | 000...0  | Interface Identifier |
  • 前缀固定为 fe80::/10。
  • 中间 54 位保留为 0。
  • 后 64 位是 接口标识符 (IID)。

IID(接口标识符)的生成算法

IPv6 支持多种 IID 生成方式,不同系统和安全要求可能不同。

方式描述稳定性特点
EUI-64(传统)从 MAC 地址转换稳定可推算出设备的真实 MAC(隐私差)
Stable Secret-based(RFC 7217)从随机密钥和接口信息生成稳定隐私好,现代系统使用
随机 IID(Privacy Extension, RFC 4941)随机生成,周期更换不稳定用于临时全局地址,几乎不用在 link-local 上

EUI-64 生成算法

假设网卡 MAC 地址是:

00:1A:2B:3C:4D:5E

EUI-64 生成 IID 的步骤如下:

步骤操作结果
1把 MAC 地址分成两半00:1A:2B 和 3C:4D:5E
2插入固定的 FF:FE 中间00:1A:2B:FF:FE:3C:4D:5E
3翻转第 7 位(U/L 位)改为 02:1A:2B:FF:FE:3C:4D:5E(表示本地管理)
4拼接到 fe80::/64 前缀fe80::021a:2bff:fe3c:4d5e
得到最终 Link-local 地址:
fe80::021a:2bff:fe3c:4d5e

Stable Secret-based RFC 7217(现代系统默认)

现代 Linux、Windows、macOS 为了防止通过地址推测设备 MAC,通常使用 “Stable Privacy Address” 机制(RFC 7217)。 IID 计算公式:

IID = F(Prefix, Network_Interface, DAD_Counter, Secret_Key)

其中:

  • Prefix = fe80::/64(或全局前缀)
  • Network_Interface = 接口名(如 eth0)
  • DAD_Counter = 检测重试次数
  • Secret_Key = 随机生成、系统保存在内核里 结果:
    同一设备、同一接口、同一前缀 → IID 固定。
    但不同机器、不同接口 → IID 不同(无法反推出 MAC)。

三、组播/多播地址(Multicast)

IPv6 完全取消了广播,所有广播功能都由组播取代。
组播地址总是以 ff00::/8 开头,第二个字节定义了作用范围(Scope)。

范围地址示例含义
ff02::1所有节点(All Nodes)当前链路上所有设备
ff02::2所有路由器(All Routers)当前链路上所有路由器
ff05::2区域范围的所有路由器用于更大范围的管理
ff02::1:ffXX:XXXXSolicited-Node 组播地址NDP(邻居发现)使用,用于 IPv6→MAC 解析

组播地址结构一般是:

| 8bit | 4bit  | 4bit  | 112bit |
|  ff  | flags | scope | group ID |

也就是:

ffXY::Z...

其中:

  • X 是 Flags(标志)
  • Y 是 Scope(作用范围)
  • 后面的部分是 Group ID(组的标识符)

Flags(标志位)字段 —— 控制“性质”

Flags 是 4 位(二进制),定义了组播地址的特征。
一般写成 4 bit 二进制 abcd,每一位都有特定含义:

位名称含义取值说明
a(bit 0)R-Flag(Rendezvous Point)是否为固定 RP(多播路由相关)一般为 0
b(bit 1)P-Flag(Prefix-based)是否根据前缀自动派生一般为 0
c(bit 2)T-Flag(Transient)是否临时(Transient)组播1 = 临时,0 = 永久(标准分配)
d(bit 3)Reserved保留位一般为 0

实际网络中常见的情况:

  • ff02:Flags = 0,表示永久的(well-known)组播地址。
  • ff32:Flags = 3(临时 + link-local),极少见,用于实验性多播。

Scope(作用范围)字段 —— 控制“传播范围”

Scope 是 4 位十六进制值,定义该组播包能传播的最大范围。

Scope 值范围说明
1Interface-local仅限本接口(测试用途)
2Link-local同一链路(最常见),NDP 都用这个
3Subnet-local子网级别(很少用)
4Admin-local管理员限定范围
5Site-local整个站点(多个链路)
8Organization-local整个机构(例如公司网)
EGlobal全球范围(几乎不用)
IPv6 NDP 的所有组播地址都用 Scope = 2(link-local),
比如:
ff02::1     所有节点(链路内)
ff02::2     所有路由器(链路内)
ff02::1:ffxx:xxxx  solicited-node(链路内)

Group ID(组编号)

Group ID 是 最后 112 位,用于区分不同的多播组。
它就像“组播频道号”。

常见标准分配的 Group ID:

地址Group ID名称
ff02::10x1所有节点组 (All Nodes)
ff02::20x2所有路由器组 (All Routers)
ff02::1:ffXX:XXXX0x1ffXX:XXXXsolicited-node 组
ff05::20x2所有站点路由器
ff02::1:20x1:2所有 DHCP 服务器

常见的标准组播地址(IPv6 内置)

地址名称用途
ff02::1所有节点路由器 RA 广播通告
ff02::2所有路由器主机 RS 请求路由器
ff02::1:ffxx:xxxxSolicited-nodeNDP 地址解析
ff02::1:2所有 DHCPv6 服务器DHCPv6 请求
ff02::5 / ff02::6OSPFv3路由协议
ff02::9RIPng路由更新
ff02::fbmDNS本地设备发现

四、任播地址(Anycast)

项目内容
含义多个接口共享同一地址,数据包发给最近的一个
用途内容分发、DNS 负载均衡(如多个 DNS 服务器共用一个地址)
配置方式从单播地址池中手动指定为 Anycast,无特殊前缀
示例多个路由器接口都配置 2001:db8::1,客户端请求会自动发往最近的那台

五、作用范围(Scope)总结

IPv6 地址天然带“范围”概念:

范围说明可路由性
Interface-local本机内(如 ::1)否
Link-local本地链路(如 fe80::/10)否
Site-local已废弃(原为内网使用)否
Unique-local (fd00::/8)内网、VPN否(但可通过隧道或 NAT66)
Global (2000::/3)互联网可路由

六、速查表汇总

类型前缀示例可公网路由典型用途
未指定地址::/128::否初始化、DAD
环回地址::1/128::1否本地测试
链路本地fe80::/10fe80::1否NDP、RS/RA
唯一本地 (ULA)fd00::/8fd12:3456::1否内网通信
全局单播2000::/32001:db8::1是公网通信
组播ff00::/8ff02::1, ff02::2局域/全网路由发现、ND、服务
任播(无固定前缀)多节点共享 2001:db8::1是最近节点选路
Link to original