21. 新一代因特网协议(IPv6)
21. 新一代因特网协议(IPv6)
21.1 转向新一代因特网协议
IPv6(因特网协议第六版)是为替代 IPv4 而设计的新一代协议,旨在解决 IPv4 的固有缺陷,适应网络规模和应用需求的增长。
- IPv4 协议存在的问题
- 有限的地址空间:32 位地址仅支持约 43 亿个地址,难以满足物联网、移动设备等大规模接入需求。
- 复杂的地址配置:需手动配置或依赖 DHCP,自动化程度低,不适应即插即用场景。
- 路由选择效率不高:路由表规模庞大,转发开销大,缺乏层次化路由优化。
- 安全性问题:原生不支持加密和认证,需依赖上层协议(如 SSL/TLS)。
- 缺乏服务质量(QoS)保证:难以区分实时业务(如语音、视频)和普通数据,无法提供差异化服务。
- IPv6 协议的主要特点
- 扩展的地址和路由功能:采用 128 位地址,支持海量设备接入,地址层次更清晰,路由效率更高。
- 简化的首部格式:移除 IPv4 中冗余字段(如首部校验和),固定首部长度为 40 字节,减少路由器处理开销。
- 支持扩展首部和选项:选项从基本首部剥离,放在独立的扩展首部中,仅由目的节点或特定路由器处理,提升转发效率;选项长度不受限(突破 IPv4 的 40 字节限制)。
- 内置安全支持:通过扩展首部(如鉴别首部 AH、封装安全有效负载 ESP)提供数据完整性、源鉴别和机密性。
- 自动配置能力:支持 “即插即用”(如无状态地址自动配置 SLAAC),无需手动干预即可获取地址。
- 增强的 QoS 能力:通过 “流标记” 字段标识需要特殊处理的数据流(如实时业务),支持差异化服务。
21.2 IPv6 数据报格式
IPv6 数据报由基本首部和有效负载(含扩展首部和上层数据)组成,结构更简洁且灵活。
基本首部(40 字节固定长度)
包含 8 个字段,从高位到低位依次为:字段 位数 含义 版本号(Version) 4 标识 IP 协议版本,IPv6 固定为 6。 通信量类别(Traffic Class) 8 与 IPv4 的 “区分服务” 字段功能一致,用于标记数据包的优先级或服务类型。 流标记(Flow Label) 20 标记需要特殊处理的数据流(如实时业务),便于路由器快速识别和转发;不支持该功能的设备置 0。 有效负载长度(Payload Length) 16 基本首部后的数据总长度(字节),包括扩展首部和上层数据;超过 65535 字节时置 0,实际长度存于 “逐跳选项首部” 的 “巨型有效负载” 选项。 下一首部(Next Header) 8 标识基本首部后的首个首部类型(如 TCP=6、UDP=17、扩展首部类型等),用于引导数据处理流程。 跳数限制(Hop Limit) 8 类似 IPv4 的 TTL,每经过一个路由器减 1,值为 0 时丢弃数据包,防止环路。 源地址(Source Address) 128 发送方的 IPv6 地址。 目的地址(Destination Address) 128 接收方的 IPv6 地址(若含路由扩展首部,可能不是最终地址)。 IPv4 与 IPv6 首部对比
特性 IPv4 首部 IPv6 首部 版本号 4 位(值为 4) 4 位(值为 6) 首部长度 可变(20-60 字节),含 “首部长度” 字段 固定 40 字节,无首部长度字段 总长度 含 “总长度” 字段(首部 + 数据) 含 “有效负载长度”(仅数据 + 扩展首部) 分片相关字段 标识、标志、片偏移(中间路由器可分片) 分片信息移至 “分片首部”,仅源节点可分片 生存时间 TTL(8 位) 跳数限制(8 位),功能相同 首部校验和 有(16 位),用于校验首部完整性 无,由上层协议(如 TCP/UDP)负责校验 地址长度 32 位 128 位 选项 包含在首部中,长度≤40 字节 放在扩展首部中,长度不限 扩展首部
扩展首部位于基本首部和上层首部之间,用于实现 IPv4 选项的功能,由 “下一首部” 字段标识,可串联多个。共定义 6 种扩展首部,处理顺序严格固定:- 逐跳选项首部:所有中间路由器必须检查的选项(如巨型有效负载、路由器告警),是唯一被中间路由器处理的扩展首部。
- 目的站点选项首部(非最终目的):仅应用于路由扩展首部中列出的中间目的地址。
- 路由选择首部:类似 IPv4 的源路由,携带数据包需经过的中转地址表,支持严格 / 松散路由。
- 分片首部:仅源节点可生成,包含分片标识、偏移量和 “M 标志”(是否为最后一片),中间路由器不处理分片。
- 鉴别首部(AH):提供数据源鉴别和数据完整性校验(不含机密性)。
- 封装安全有效负载(ESP):提供数据机密性(加密)和可选的完整性校验。
- 目的站点选项首部(最终目的):仅应用于数据包的最终接收者。
21.3 IPv6 地址
IPv6 采用 128 位地址,支持单播、任播和组播三种类型,无广播地址,地址表示和结构更灵活。
- 地址类型
- 单播地址:标识单个接口,数据包被转发到该接口。
- 任播地址:标识一组接口(通常属于不同节点),数据包被转发到距离最近的接口(按路由度量)。
- 组播地址:标识一组接口,数据包被转发到所有接口。
- 地址表示方法
- 优先格式:8 组 4 位十六进制数,用冒号分隔(如
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
)。 - 缩写规则:
- 每组前导零可省略(如
0008
→8
,0800
→800
); - 连续多组零可缩写为
::
(仅一次),如1080:0:0:0:8:800:200C:417A
→1080::8:800:200C:417A
; - 嵌入 IPv4 地址时,后 32 位用点分十进制(如
::192.168.1.1
)。
- 每组前导零可省略(如
- 优先格式:8 组 4 位十六进制数,用冒号分隔(如
- 单播地址分类
- 全球单播地址:类似 IPv4 公网地址,全球可达,格式为
[全球路由前缀][子网ID][接口ID]
(各字段长度可变,通常接口 ID 为 64 位)。当前主要使用前缀001
(3 位)的地址块。 - 本地单播地址:仅在本地范围内有效,不路由到公网:
- 链路本地地址:前缀
FE80::/10
,用于同一链路内节点通信(如邻居发现),自动配置生成。 - 站点本地地址:前缀
FEC0::/10
,用于同一站点内通信,已不推荐使用。 - 唯一本地单播地址:前缀
FC00::/7
(L 位 = 1 时本地分配),替代站点本地地址,具有机构内唯一性。
- 链路本地地址:前缀
- 特殊单播地址:
- 未确定地址:
::
,仅作源地址(类似 IPv4 的0.0.0.0
)。 - 环回地址:
::1
,用于节点自身测试(类似 IPv4 的127.0.0.1
)。 - IPv4 兼容地址:
::w.x.y.z
,用于 IPv4/IPv6 双栈节点通信,已不推荐。 - IPv4 映射地址:
::FFFF:w.x.y.z
,表示仅支持 IPv4 的节点。
- 未确定地址:
- 全球单播地址:类似 IPv4 公网地址,全球可达,格式为
- 组播地址
- 格式:前缀
FF00::/8
(8 位)+ 标志(4 位)+ 范围(4 位)+ 组 ID(112 位)。 - 标志字段(0RPT):
T=0
:永久分配的组播地址(众所周知);T=1
:临时地址。P=1
:基于单播前缀的组播地址;R=1
:嵌入聚合点(RP)地址。
- 范围字段:限制组播传播范围,如
0x1
(接口本地)、0x2
(链路本地)、0x5
(站点本地)、0xE
(全球)等。
- 格式:前缀
- 任播地址
- 格式与单播地址相同,需通过路由协议标识为任播。
- 应用场景:寻找最近的服务器(如 DNS、时间服务器)。
21.4 向 IPv6 过渡
由于 IPv4 和 IPv6 无法直接互通,需通过过渡技术实现平滑迁移,核心技术包括双协议栈和隧道技术。
- 双协议栈
- 定义:节点同时运行 IPv4 和 IPv6 协议栈,根据目的地址自动选择协议。
- 模式:
- 完全双栈:所有设备和终端均支持双栈,可自由选择 IPv4 或 IPv6 通信。
- 有限双栈:部分设备支持双栈,新增设备仅支持 IPv6,通过双栈设备与 IPv4 网络互通。
- 工作流程:
- 若目的地址为 IPv4,使用 IPv4 协议;
- 若目的地址为 IPv6(非兼容地址),使用 IPv6 协议(可能需隧道);
- 若目的为域名,通过 DNS 解析获取 IPv4/IPv6 地址后选择协议。
- 隧道技术
- 定义:将 IPv6 数据包封装在 IPv4 数据包中,在 IPv4 网络中传输,到达目的地后解封装。
- 作用:在纯 IPv4 网络中实现 IPv6 通信,无需大规模升级基础设施。
- 限制:需隧道两端节点均支持 IPv6,否则接收方会将封装的 IPv6 数据视为无效 IPv4 数据。
21.5 ICMPv6
ICMPv6 是 IPv6 的控制协议,整合了 IPv4 中 ICMP、ARP、IGMP 的功能,负责差错报告、诊断、邻居发现等。
- 功能与封装
- 功能:差错报告、信息查询、邻居发现(替代 ARP)、组播成员管理(替代 IGMP)等。
- 封装:被 IPv6 首部封装,“下一首部” 字段值为 58。
- 报文分类
- 差错报文:报告数据包传输错误,如目标不可达、分组太大、超时、参数问题。
- 信息报文:用于诊断测试,如回应请求(类似 ping)和回应应答。
- 邻机发现报文:实现地址解析、路由器发现、自动配置等,包括路由器请求 / 通告、邻居请求 / 通告、重定向报文。
- 反向邻机发现报文:根据链路层地址查询对应的 IPv6 地址。
- 组成员报文:管理组播成员关系(如 MLDv2),包括组播侦听查询 / 报告报文。
- 报文格式
- 通用格式:类型(8 位)+ 代码(8 位)+ 校验和(16 位)+ 数据(可变)。
- 类型字段标识报文类型,如
1
(目标不可达)、128
(回应请求)、133
(路由器请求)等。
本章要点
- IPv6 通过 128 位地址解决 IPv4 地址耗尽问题,简化首部并引入扩展首部提升转发效率,支持自动配置和 QoS。
- IPv6 基本首部固定 40 字节,含 8 个字段,扩展首部按严格顺序处理,仅特定节点解析。
- IPv6 地址分单播、任播、组播,无广播,支持灵活缩写,本地地址(如链路本地)和全球地址分工明确。
- 过渡技术以双协议栈(兼容 IPv4/IPv6)和隧道技术(IPv4 网络传输 IPv6)为核心,实现平滑迁移。
- ICMPv6 整合多种功能,负责差错处理、邻居发现、组播管理等,是 IPv6 运行的关键支撑。