# 4.4 IPv6 ## 一、IPv6概述 ### 1.1 为什么要引入IPv6 **IPv4的问题**: - 地址空间不足(32位,约43亿个地址) - 地址分配不均 - 路由表膨胀 - 安全性差 - 配置复杂 **IPv6的优势**: - 巨大的地址空间(128位) - 简化的首部格式 - 更好的安全性(IPsec) - 自动配置 - 更好的QoS支持 ### 1.2 IPv6的特点 - **128位地址**:约3.4×10³⁸个地址 - **简化的首部**:固定40字节,提高处理效率 - **流标签**:支持QoS - **即插即用**:自动配置 - **安全性**:内置IPsec --- ## 二、IPv6地址 ### 2.1 IPv6地址表示 **128位地址**: - 8组16位,用十六进制表示 - 每组之间用冒号分隔 **格式**: ``` XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX ``` **例子**: ``` 2001:0DB8:0000:0000:0000:FF00:0042:8329 ``` ### 2.2 压缩表示 **前导零压缩**: - 每组的前导零可以省略 ``` 2001:DB8:0:0:0:FF00:42:8329 ``` **双冒号压缩**: - 连续的零组可以用::代替 - 只能使用一次 ``` 2001:DB8::FF00:42:8329 ``` ### 2.3 IPv6地址类型 #### 单播地址(Unicast) **标识单个接口**: - 全球单播地址(2000::/3) - 链路本地地址(FE80::/10) - 唯一本地地址(FC00::/7) - 环回地址(::1) - 未指定地址(::) #### 组播地址(Multicast) **标识一组接口**: - 前缀:FF00::/8 - FF02::1:所有节点 - FF02::2:所有路由器 #### 任播地址(Anycast) **标识一组接口**: - 与组播类似,但只发送给最近的一个 - 从单播地址分配 ### 2.4 IPv6地址结构 **全球单播地址**: ``` | 3位 | 45位 | 16位 | 64位 | | 001 | 全局路由前缀 | 子网ID | 接口标识符 | ``` **链路本地地址**: ``` | 10位 | 54位 | 64位 | | 1111111010 | 0 | 接口标识符 | ``` **接口标识符**: - 通常由MAC地址生成(EUI-64) --- ## 三、IPv6首部格式 ### 3.1 IPv6首部 ``` +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` ### 3.2 首部字段 **版本(Version,4位)**: - IP协议版本 - IPv6:0110(6) **流量类别(Traffic Class,8位)**: - 类似于IPv4的TOS - 用于QoS **流标签(Flow Label,20位)**: - 标识特定的数据流 - 用于QoS **有效载荷长度(Payload Length,16位)**: - 有效载荷的长度(字节) - 不包括首部(固定40字节) **下一个首部(Next Header,8位)**: - 类似于IPv4的协议字段 - 标识上层协议或扩展首部 **跳数限制(Hop Limit,8位)**: - 类似于IPv4的TTL - 每经过一个路由器减1 **源地址(Source Address,128位)**: - 发送方的IPv6地址 **目的地址(Destination Address,128位)**: - 接收方的IPv6地址 ### 3.3 IPv6扩展首部 **概念**: - 可选信息放在扩展首部中 - 链式结构 **类型**: - 逐跳选项首部(Hop-by-Hop Options) - 目的选项首部(Destination Options) - 路由首部(Routing) - 分片首部(Fragment) - 认证首部(AH) - 封装安全载荷首部(ESP) - 移动性首部(Mobility) ### 3.4 IPv4与IPv6首部比较 | 特性 | IPv4 | IPv6 | |-----|------|------| | 首部长度 | 可变(20-60字节) | 固定(40字节) | | 校验和 | 有 | 无(由上层处理) | | 选项 | 首部中 | 扩展首部 | | 分片 | 路由器和主机 | 仅主机 | | 流标签 | 无 | 有 | | ARP | 有 | 无(用NDP) | | 广播 | 有 | 无(用组播) | --- ## 四、IPv4向IPv6过渡 ### 4.1 双协议栈 **概念**: - 主机同时运行IPv4和IPv6 - 根据目的地址选择协议 **优点**: - 简单 - 兼容性好 **缺点**: - 需要维护两个协议栈 - 资源消耗大 ### 4.2 隧道技术 **概念**: - IPv6分组封装在IPv4分组中传输 - 通过IPv4网络传输IPv6数据 **类型**: - **手动隧道**:手动配置隧道端点 - **自动隧道**:自动建立隧道 - 6to4 - ISATAP - Teredo **6to4隧道**: - 使用特殊的IPv6地址前缀(2002::/16) - IPv4地址嵌入IPv6地址中 - 自动建立隧道 ### 4.3 NAT-PT **概念**: - 网络地址转换-协议转换 - 在IPv4和IPv6之间转换 **功能**: - 地址转换 - 协议转换 **缺点**: - 复杂 - 某些应用不支持 --- ## 五、IPv6邻居发现协议(NDP) ### 5.1 NDP概述 **功能**: - 替代IPv4的ARP - 地址解析 - 路由器发现 - 重复地址检测 ### 5.2 NDP报文类型 **路由器请求(Router Solicitation)**: - 主机请求路由器信息 **路由器通告(Router Advertisement)**: - 路由器通告网络信息 **邻居请求(Neighbor Solicitation)**: - 请求邻居的链路层地址 - 验证邻居可达性 **邻居通告(Neighbor Advertisement)**: - 响应邻居请求 - 通告链路层地址变化 **重定向(Redirect)**: - 路由器通知主机更好的路由 ### 5.3 NDP与ARP的比较 | 特性 | ARP(IPv4) | NDP(IPv6) | |-----|------------|------------| | 协议层次 | 网络层之上 | ICMPv6 | | 报文类型 | 请求/响应 | 5种报文 | | 安全性 | 差 | 有IPsec支持 | | 功能 | 地址解析 | 地址解析+路由器发现+... | --- ## 六、考研重点 1. **IPv6的引入原因**:IPv4的问题、IPv6的优势 2. **IPv6地址**: - 128位地址 - 表示方法:压缩表示 - 地址类型:单播、组播、任播 - 地址结构 3. **IPv6首部格式**: - 各字段的含义 - 与IPv4首部的比较 - 扩展首部 4. **IPv4向IPv6过渡**: - 双协议栈 - 隧道技术 - NAT-PT 5. **IPv6邻居发现协议(NDP)**: - 功能 - 报文类型 - 与ARP的比较 --- *下一节:4.5 路由协议*