【TCP/IP】21. 新一代因特网协议(IPv6)

发布于:2025-07-15 ⋅ 阅读:(16) ⋅ 点赞:(0)

21. 新一代因特网协议(IPv6)

21.1 转向新一代因特网协议

IPv6(因特网协议第六版)是为替代 IPv4 而设计的新一代协议,旨在解决 IPv4 的固有缺陷,适应网络规模和应用需求的增长。

  1. IPv4 协议存在的问题
    • 有限的地址空间:32 位地址仅支持约 43 亿个地址,难以满足物联网、移动设备等大规模接入需求。
    • 复杂的地址配置:需手动配置或依赖 DHCP,自动化程度低,不适应即插即用场景。
    • 路由选择效率不高:路由表规模庞大,转发开销大,缺乏层次化路由优化。
    • 安全性问题:原生不支持加密和认证,需依赖上层协议(如 SSL/TLS)。
    • 缺乏服务质量(QoS)保证:难以区分实时业务(如语音、视频)和普通数据,无法提供差异化服务。
  2. IPv6 协议的主要特点
    • 扩展的地址和路由功能:采用 128 位地址,支持海量设备接入,地址层次更清晰,路由效率更高。
    • 简化的首部格式:移除 IPv4 中冗余字段(如首部校验和),固定首部长度为 40 字节,减少路由器处理开销。
    • 支持扩展首部和选项:选项从基本首部剥离,放在独立的扩展首部中,仅由目的节点或特定路由器处理,提升转发效率;选项长度不受限(突破 IPv4 的 40 字节限制)。
    • 内置安全支持:通过扩展首部(如鉴别首部 AH、封装安全有效负载 ESP)提供数据完整性、源鉴别和机密性。
    • 自动配置能力:支持 “即插即用”(如无状态地址自动配置 SLAAC),无需手动干预即可获取地址。
    • 增强的 QoS 能力:通过 “流标记” 字段标识需要特殊处理的数据流(如实时业务),支持差异化服务。

21.2 IPv6 数据报格式

IPv6 数据报由基本首部有效负载(含扩展首部和上层数据)组成,结构更简洁且灵活。

  1. 基本首部(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 地址(若含路由扩展首部,可能不是最终地址)。
  2. IPv4 与 IPv6 首部对比

    特性 IPv4 首部 IPv6 首部
    版本号 4 位(值为 4) 4 位(值为 6)
    首部长度 可变(20-60 字节),含 “首部长度” 字段 固定 40 字节,无首部长度字段
    总长度 含 “总长度” 字段(首部 + 数据) 含 “有效负载长度”(仅数据 + 扩展首部)
    分片相关字段 标识、标志、片偏移(中间路由器可分片) 分片信息移至 “分片首部”,仅源节点可分片
    生存时间 TTL(8 位) 跳数限制(8 位),功能相同
    首部校验和 有(16 位),用于校验首部完整性 无,由上层协议(如 TCP/UDP)负责校验
    地址长度 32 位 128 位
    选项 包含在首部中,长度≤40 字节 放在扩展首部中,长度不限
  3. 扩展首部
    扩展首部位于基本首部和上层首部之间,用于实现 IPv4 选项的功能,由 “下一首部” 字段标识,可串联多个。共定义 6 种扩展首部,处理顺序严格固定:

    1. 逐跳选项首部:所有中间路由器必须检查的选项(如巨型有效负载、路由器告警),是唯一被中间路由器处理的扩展首部。
    2. 目的站点选项首部(非最终目的):仅应用于路由扩展首部中列出的中间目的地址。
    3. 路由选择首部:类似 IPv4 的源路由,携带数据包需经过的中转地址表,支持严格 / 松散路由。
    4. 分片首部:仅源节点可生成,包含分片标识、偏移量和 “M 标志”(是否为最后一片),中间路由器不处理分片。
    5. 鉴别首部(AH):提供数据源鉴别和数据完整性校验(不含机密性)。
    6. 封装安全有效负载(ESP):提供数据机密性(加密)和可选的完整性校验。
    7. 目的站点选项首部(最终目的):仅应用于数据包的最终接收者。

21.3 IPv6 地址

IPv6 采用 128 位地址,支持单播、任播和组播三种类型,无广播地址,地址表示和结构更灵活。

  1. 地址类型
    • 单播地址:标识单个接口,数据包被转发到该接口。
    • 任播地址:标识一组接口(通常属于不同节点),数据包被转发到距离最近的接口(按路由度量)。
    • 组播地址:标识一组接口,数据包被转发到所有接口。
  2. 地址表示方法
    • 优先格式:8 组 4 位十六进制数,用冒号分隔(如FEDC:BA98:7654:3210:FEDC:BA98:7654:3210)。
    • 缩写规则:
      • 每组前导零可省略(如000880800800);
      • 连续多组零可缩写为::(仅一次),如1080:0:0:0:8:800:200C:417A1080::8:800:200C:417A
      • 嵌入 IPv4 地址时,后 32 位用点分十进制(如::192.168.1.1)。
  3. 单播地址分类
    • 全球单播地址:类似 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 的节点。
  4. 组播地址
    • 格式:前缀FF00::/8(8 位)+ 标志(4 位)+ 范围(4 位)+ 组 ID(112 位)。
    • 标志字段(0RPT):
      • T=0:永久分配的组播地址(众所周知);T=1:临时地址。
      • P=1:基于单播前缀的组播地址;R=1:嵌入聚合点(RP)地址。
    • 范围字段:限制组播传播范围,如0x1(接口本地)、0x2(链路本地)、0x5(站点本地)、0xE(全球)等。
  5. 任播地址
    • 格式与单播地址相同,需通过路由协议标识为任播。
    • 应用场景:寻找最近的服务器(如 DNS、时间服务器)。

21.4 向 IPv6 过渡

由于 IPv4 和 IPv6 无法直接互通,需通过过渡技术实现平滑迁移,核心技术包括双协议栈和隧道技术。

  1. 双协议栈
    • 定义:节点同时运行 IPv4 和 IPv6 协议栈,根据目的地址自动选择协议。
    • 模式:
      • 完全双栈:所有设备和终端均支持双栈,可自由选择 IPv4 或 IPv6 通信。
      • 有限双栈:部分设备支持双栈,新增设备仅支持 IPv6,通过双栈设备与 IPv4 网络互通。
    • 工作流程:
      • 若目的地址为 IPv4,使用 IPv4 协议;
      • 若目的地址为 IPv6(非兼容地址),使用 IPv6 协议(可能需隧道);
      • 若目的为域名,通过 DNS 解析获取 IPv4/IPv6 地址后选择协议。
  2. 隧道技术
    • 定义:将 IPv6 数据包封装在 IPv4 数据包中,在 IPv4 网络中传输,到达目的地后解封装。
    • 作用:在纯 IPv4 网络中实现 IPv6 通信,无需大规模升级基础设施。
    • 限制:需隧道两端节点均支持 IPv6,否则接收方会将封装的 IPv6 数据视为无效 IPv4 数据。

21.5 ICMPv6

ICMPv6 是 IPv6 的控制协议,整合了 IPv4 中 ICMP、ARP、IGMP 的功能,负责差错报告、诊断、邻居发现等。

  1. 功能与封装
    • 功能:差错报告、信息查询、邻居发现(替代 ARP)、组播成员管理(替代 IGMP)等。
    • 封装:被 IPv6 首部封装,“下一首部” 字段值为 58。
  2. 报文分类
    • 差错报文:报告数据包传输错误,如目标不可达、分组太大、超时、参数问题。
    • 信息报文:用于诊断测试,如回应请求(类似 ping)和回应应答。
    • 邻机发现报文:实现地址解析、路由器发现、自动配置等,包括路由器请求 / 通告、邻居请求 / 通告、重定向报文。
    • 反向邻机发现报文:根据链路层地址查询对应的 IPv6 地址。
    • 组成员报文:管理组播成员关系(如 MLDv2),包括组播侦听查询 / 报告报文。
  3. 报文格式
    • 通用格式:类型(8 位)+ 代码(8 位)+ 校验和(16 位)+ 数据(可变)。
    • 类型字段标识报文类型,如1(目标不可达)、128(回应请求)、133(路由器请求)等。

本章要点

  • IPv6 通过 128 位地址解决 IPv4 地址耗尽问题,简化首部并引入扩展首部提升转发效率,支持自动配置和 QoS。
  • IPv6 基本首部固定 40 字节,含 8 个字段,扩展首部按严格顺序处理,仅特定节点解析。
  • IPv6 地址分单播、任播、组播,无广播,支持灵活缩写,本地地址(如链路本地)和全球地址分工明确。
  • 过渡技术以双协议栈(兼容 IPv4/IPv6)和隧道技术(IPv4 网络传输 IPv6)为核心,实现平滑迁移。
  • ICMPv6 整合多种功能,负责差错处理、邻居发现、组播管理等,是 IPv6 运行的关键支撑。

网站公告

今日签到

点亮在社区的每一天
去签到