🧭 一、IPv6 是什么?
IPv6(Internet Protocol version 6) 是 IPv4 的下一代网络层协议,用来在网络中标识主机、路由数据包。
它的核心目标是:
- 解决 IPv4 地址枯竭问题;
- 简化协议头;
- 加强自动配置与安全性。
🌐 二、IPv6 地址基础
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 地址数量 | 约 43 亿个 | 约 (几乎无限) |
| 地址表示 | 点分十进制(192.168.1.1) | 十六进制冒号分隔(2001:db8::1) |
| 自动配置 | 依赖 DHCP | 支持 SLAAC、NDP |
| 广播 | 有(255.255.255.255) | 无(用多播代替) |
IPv6 把“广播”完全废弃,取而代之的是:
- 组播(Multicast)
- 任播(Anycast)
🧩 三、IPv6 报文结构概览
IPv6 报文分为两部分:
+------------------------------------+
| 主头 (Fixed Header, 40 bytes) |
+------------------------------------+
| 可选扩展头 (Extension Headers) |
+------------------------------------+
| 上层数据 (Payload: TCP/UDP/ICMPv6) |
+------------------------------------+
IPv6 取消了 IPv4 的繁琐字段(如校验和、分片标志、头部长度),保持主头固定 40 字节,简洁且高效。
📦 四、IPv6 主头(Fixed Header)字段详解
| 字段 | 长度 | 功能说明 |
|---|---|---|
| Version | 4 bit | 固定为 6 |
| Traffic Class | 8 bit | 类似 IPv4 的 TOS,用于 QoS / 流量优先级 |
| Flow Label | 20 bit | 用于标识同一数据流(如视频流) |
| Payload Length | 16 bit | 有效载荷长度(不含主头) |
| Next Header | 8 bit | 指示下一个头部类型(TCP=6、UDP=17、ICMPv6=58 等) |
| Hop Limit | 8 bit | 类似 IPv4 的 TTL,每经过一跳减 1 |
| Source Address | 128 bit | 源 IPv6 地址 |
| Destination Address | 128 bit | 目的 IPv6 地址 |
🚀 注意:IPv6 报文头没有校验和,这能减少中间设备的处理负担(链路层和传输层已有校验)。
🧱 五、扩展头(Extension Headers)
IPv6 不像 IPv4 那样把所有功能塞进主头,而是把“附加功能”放在一串可选的扩展头里,形成一个链式结构:
IPv6 Header → [扩展头1] → [扩展头2] → 上层协议
扩展头链表结构(Next Header)
每个头部都有一个字段:
Next Header (8 bit)
它指向下一个头的类型(或最终上层协议)。
例如:
IPv6 Header → Routing (43) → Fragment (44) → TCP (6)
整个链式结构如下:
[IPv6 主头]
↓ Next Header = 43
[Routing Header]
↓ Next Header = 44
[Fragment Header]
↓ Next Header = 6
[TCP Header]
↓
[Data]
常见的扩展头有:
| Next Header 值 | 名称 | 功能 | 是否中间节点处理 |
|---|---|---|---|
| 0 | Hop-by-Hop Options | 每一跳都要处理(例如路由器发现、Jumbo帧) | ✅ 是 |
| 43 | Routing Header | 指定路由路径(类似源路由) | ✅ 是(沿途路由处理) |
| 44 | Fragment Header | 分片信息(仅主机使用) | ❌ 否 |
| 50 | ESP | IPsec 加密封装 | ❌ 否 |
| 51 | AH | IPsec 认证头 | ❌ 否 |
| 60 | Destination Options | 仅目的节点处理 | ❌ 否 |
| 135 | Mobility Header (MIPv6) | 移动IPv6支持 | ❌ 否 |
| (TCP=6, UDP=17, ICMPv6=58) | 上层协议 | 表示链表的终点 | — |
扩展头推荐处理顺序
RFC 8200 定义了推荐顺序(从前到后):
IPv6 Header →
Hop-by-Hop Options →
Destination Options(仅限路由前) →
Routing →
Fragment →
Authentication(AH) →
ESP →
Destination Options(到达目的地) →
上层协议(TCP/UDP/ICMPv6...)
⚠️ 顺序不能随意变,否则接收端可能丢弃报文。
🌍 六、IPv6 的关键改进点(相对 IPv4)
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址空间 | 32 位 | 128 位(几乎无限) |
| 配置方式 | DHCP 手动配置 | 支持自动配置(SLAAC + NDP) |
| 广播 | 有 | 无(用组播代替) |
| NAT | 常用 | 通常不需要 |
| 头部长度 | 可变(20-60 字节) | 固定(40 字节) |
| 分片处理 | 路由器可分片 | 仅主机可分片 |
| 安全性 | 可选 IPsec | 内建 IPsec 支持 |
| 邻居发现 | ARP + ICMP + DHCP | 全部由 ICMPv6(NDP)实现 |
| 服务质量 | TOS 字段 | Traffic Class + Flow Label |