IPv6协议 ICMPv6协议 NDP协议

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 Multicast Anycast

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

Unicast

🧭 二、单播地址的常见类型

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-Address

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)

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...

其中:

  • XFlags(标志)
  • YScope(作用范围)
  • 后面的部分是 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

👉 实际网络中常见的情况:

  • ff02Flags = 0,表示永久的(well-known)组播地址。
  • ff32Flags = 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

🧮 四、任播地址(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::1NDP、RS/RA
唯一本地 (ULA)fd00::/8fd12:3456::1内网通信
全局单播2000::/32001:db8::1公网通信
组播ff00::/8ff02::1, ff02::2局域/全网路由发现、ND、服务
任播(无固定前缀)多节点共享 2001:db8::1最近节点选路
Link to original