IPv6作为下一代互联网协议,在地址长度、报文头结构等方面进行了重大改进。以下是其核心格式的详细解析:
一、IPv6基本报文头格式
IPv6报文头固定为40字节(相比IPv4的20字节基础头更简洁),包含以下8个字段:
字段名称 | 长度(位) | 描述 |
---|---|---|
版本(Version) | 4 | 固定为0110 (6),标识IPv6协议 |
流量类别(Traffic Class) | 8 | 类似IPv4的TOS字段,用于QoS分类和优先级 |
流标签(Flow Label) | 20 | 标识属于同一"流"的数据包,支持QoS和实时传输 |
载荷长度(Payload Length) | 16 | 除基本头外的有效载荷字节数(最大65535字节) |
下一报头(Next Header) | 8 | 指示上层协议类型或扩展头类型(类似IPv4的Protocol字段) |
跳数限制(Hop Limit) | 8 | 类似IPv4的TTL,每经过路由器减1,为0时丢弃 |
源地址(Source Address) | 128 | 发送方IPv6地址 |
目的地址(Destination Address) | 128 | 接收方IPv6地址 |
关键改进:
- 取消了校验和字段(依赖上层协议和链路层校验)
- 取消了分片字段(分片只能在源节点进行)
- 固定长度报文头(无需选项字段)
二、IPv6扩展头机制
当需要额外功能时,通过扩展头实现(类似IPv4选项但更灵活):
扩展头类型 | 值 | 功能描述 |
---|---|---|
逐跳选项 | 0 | 必须经过每个节点处理的选项(如巨型包分片) |
路由选择 | 43 | 指定数据包必须经过的中间节点(类似IPv4的松散/严格源路由) |
分片 | 44 | 源节点使用的分片扩展头(接收方重组) |
认证头 | 51 | IPsec认证功能 |
封装安全载荷 | 50 | IPsec加密功能 |
目的地选项 | 60 | 仅目的节点处理的选项(如移动IPv6) |
扩展头链式结构:
[基本头] → [逐跳选项头] → [路由选择头] → [分片头] → [认证头] → [目的地选项头] → [上层协议数据]
三、IPv6地址格式
1. 地址表示法
- 128位地址,通常表示为8组4位十六进制数,每组用冒号分隔:2001:0db8:0000:0000:0000:ff00:0042:8329
-
- 压缩表示:
- 连续0可用
::
替代(每条地址只能使用一次):2001:db8::ff00:42:8329
- 前导0可省略:
2001:db8:0:0:0:ff00:42:8329 → 2001:db8::ff00:42:8329
2. 地址类型
类型 | 前缀标识 | 示例 | 特点 |
---|---|---|---|
单播地址 | 无特殊前缀 | 2001:db8::1 | 一对一通信 |
组播地址 | ff00::/8 | ff02::1 | 一对多通信 |
任播地址 | 无特殊前缀 | 2001:db8::1 | 最近的一个节点响应(需路由协议支持) |
特殊地址 | |||
::/128 | 未指定地址 | :: | 初始化时使用 |
::1/128 | 环回地址 | ::1 | 类似IPv4的127.0.0.1 |
fe80::/10 | 链路本地地址 | fe80::a00:27ff:fe4e:501c | 仅本地链路有效,自动配置 |
fc00::/7 | 唯一本地地址 | fd00::1 | 类似IPv4的私有地址 |
2001:db8::/32 | 文档示例地址 | 2001:db8::1 | RFC文档专用,不可在公共网络使用 |
四、IPv6与IPv4关键区别对比
特性 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位(约43亿地址) | 128位(约3.4×10³⁸地址) |
报文头长度 | 可变(最小20字节) | 固定40字节 |
地址配置 | 手动/DHCP | SLAAC(无状态自动配置)/DHCPv6 |
分片机制 | 路由器和源节点均可分片 | 仅源节点可分片 |
校验和 | 每层都有校验和 | 取消网络层校验和(依赖上下层) |
广播 | 支持 | 取消广播,改用组播 |
安全性 | 需额外IPsec支持 | 原生支持IPsec |
移动性 | 需移动IP支持 | 原生移动IPv6支持 |
五、典型IPv6数据包示例
[IPv6基本头]
版本:0110 | 流量类别:00000000 | 流标签:0000000000000000
六、记忆
1.IPv6报文头基础字段记忆表
字段名称 | 位数 | 固定值/范围 | 记忆技巧 | 类比IPv4 |
---|---|---|---|---|
版本(Version) | 4 | 固定0110 (6) | “6代网络,4位标识” | Protocol字段(8位) |
流量类别 | 8 | 0-255 | “QoS优先级,类似TOS” | TOS字段 |
流标签 | 20 | 0-1048575 | “20位流水号,标记数据流” | 无直接对应 |
载荷长度 | 16 | 0-65535 | “16位长度,单位字节” | Total Length字段 |
下一报头 | 8 | 0-255(协议类型) | “扩展头或上层协议” | Protocol字段 |
跳数限制 | 8 | 0-255 | “每跳减1,TTL升级版” | TTL字段 |
源/目的地址 | 128 | 8组16进制数 | “128位地址,8组冒号分隔” | 32位地址(4组十进制) |
记忆口诀:
"四位版本六代网,八位流量控优先,二十流标数据流,十六载荷算长度,八位下一报头定,八位跳数减到零,地址一百二十八,八组冒号记分明"
2.IPv6地址类型速记表
地址类型 | 前缀标识 | 示例 | 记忆关键词 | 特点 |
---|---|---|---|---|
单播 | 无特殊前缀 | 2001:db8::1 | “默认一对一通信” | 基础通信地址 |
组播 | ff00::/8 | ff02::1 | “FF开头,一对多” | 类似IPv4广播 |
任播 | 无特殊前缀 | 2001:db8::1 | “单播形式,就近响应” | 路由优化 |
特殊地址 | ||||
未指定地址 | ::/128 | :: | “初始化默认地址” | 相当于IPv4的0.0.0.0 |
环回地址 | ::1/128 | ::1 | “本地测试,类似127.0.0.1” | 本地回环 |
链路本地 | fe80::/10 | fe80::1 | “FE80开头,本地链路” | 无需配置,自动分配 |
唯一本地 | fc00::/7 | fd00::1 | “FC/FD开头,私有地址” | 类似IPv4的10.0.0.0/8 |
记忆技巧:
- 前缀联想:
ff
→组播(Flash广播),fe80
→本地(Link),fc/fd
→私有(Factory) - 特殊地址:
::
像"空杯子"(未指定),::1
像"数字1"(环回)
3.IPv6扩展头顺序记忆表
扩展头类型 | 类型值 | 功能 | 记忆口诀 | 是否必须处理 |
---|---|---|---|---|
逐跳选项 | 0 | 必经节点处理 | “逐跳优先,必须检查” | 是 |
路由选择 | 43 | 指定路径 | “路由导航,按序经过” | 否(除非目标) |
分片 | 44 | 源节点分片 | “分片重组,源端负责” | 否 |
认证头 | 51 | IPsec认证 | “认证安全,51开始” | 否 |
封装安全载荷 | 50 | IPsec加密 | “加密载荷,50先行” | 否 |
目的地选项 | 60 | 目的节点处理 | “终点选项,最后处理” | 否 |
顺序口诀:
"逐路分,认封目" → 0→43→44→51→50→60
4.IPv6 vs IPv4核心区别对比表
特性 | IPv4 | IPv6 | 记忆点 |
---|---|---|---|
地址长度 | 32位(4字节) | 128位(16字节) | “IPv6地址是IPv4的4倍长” |
报文头长度 | 可变(最小20字节) | 固定40字节 | “IPv6头更简洁” |
分片机制 | 路由器/源节点均可分片 | 仅源节点可分片 | “IPv6分片更严格” |
地址配置 | 手动/DHCP | SLAAC/DHCPv6 | “IPv6支持无状态配置” |
广播 | 支持 | 取消(改用组播) | “IPv6没有广播风暴” |
安全性 | 需额外IPsec | 原生支持IPsec | “IPv6天生更安全” |
对比口诀:
"地址翻四倍,分片更严格,取消广播制,原生保安全"