Appearance
IPv6 基础
考情分析
IPv6 在 408 中属于中低频考点,选择题可能考 IPv6 与 IPv4 的区别、IPv6 地址表示方法、过渡技术等。了解核心差异即可,不需要深入掌握 IPv6 的全部细节。
考频:★★☆
IPv4 地址耗尽的现实困境
IPv4 使用 32 位地址,理论上最多
IPv6 使用 128 位地址,地址空间为
除了地址空间,IPv6 还在首部格式、安全性、移动性等方面做了改进。
IPv6 地址表示
IPv6 地址是 128 位,用冒分十六进制表示,每 16 位一组,共 8 组:
2001:0db8:85a3:0000:0000:8a2e:0370:7334缩写规则
- 每组中前导零可以省略:
0db8→db8,0000→0 - 连续的全零组可以用 :: 替代(只能用一次):
原始: 2001:0db8:0000:0000:0000:0000:0000:0001
缩写: 2001:db8::1:: 只能出现一次,否则无法确定省略了多少组零。
前缀表示
类似 IPv4 的 CIDR 表示法,用斜线加前缀长度:
2001:db8::/32表示前 32 位是网络前缀。
IPv6 地址类型
IPv6 取消了广播地址,只有三种地址类型:
| 类型 | 说明 |
|---|---|
| 单播(Unicast) | 标识一个接口,数据报发给该接口 |
| 组播(Multicast) | 标识一组接口,数据报发给组内所有接口 |
| 任播(Anycast) | 标识一组接口,数据报发给其中距离最近的一个 |
注意:IPv6 没有广播地址。原来 IPv4 广播的功能由组播来实现。
几个特殊的单播地址:
| 地址 | 含义 | 类比 IPv4 |
|---|---|---|
| ::1 | 环回地址 | 127.0.0.1 |
| :: | 未指定地址 | 0.0.0.0 |
| ::ffff:x.x.x.x | IPv4 映射地址 | 用于兼容 |
| fe80::/10 | 链路本地地址 | 169.254.x.x |
IPv6 首部格式
IPv6 首部的一大特点是固定长度 40 字节(IPv4 是 20~60 字节)。
| 字段 | 位数 | 说明 |
|---|---|---|
| 版本(Version) | 4 bit | 固定为 6 |
| 通信量类(Traffic Class) | 8 bit | 类似 IPv4 的服务类型 |
| 流标签(Flow Label) | 20 bit | 标识一条数据流,便于特殊处理 |
| 有效载荷长度(Payload Length) | 16 bit | 数据部分的长度(不含首部本身的 40 字节) |
| 下一个首部(Next Header) | 8 bit | 指示紧跟在 IPv6 首部后面的是什么(扩展首部或上层协议) |
| 跳数限制(Hop Limit) | 8 bit | 等同于 IPv4 的 TTL |
| 源地址 | 128 bit | |
| 目的地址 | 128 bit |
IPv6 首部做了哪些简化
和 IPv4 首部相比,IPv6 做了大量简化:
- 取消了首部校验和:每跳重新计算校验和太浪费时间,交给上层协议和数据链路层去做
- 取消了分片相关字段:IPv6 中路由器不负责分片,分片信息放在扩展首部中
- 取消了首部长度字段:因为 IPv6 首部固定 40 字节,不需要这个字段
- 取消了选项字段:用扩展首部链的方式替代,更灵活
扩展首部
IPv6 用扩展首部来实现可选功能(分片、路由、认证等)。扩展首部通过 Next Header 字段串成一条链。
IPv6基本首部 → 扩展首部1 → 扩展首部2 → TCP/UDP首部 → 数据
(Next=扩展1) (Next=扩展2) (Next=TCP)路由器只需要处理基本首部(和少数扩展首部),不需要像 IPv4 那样检查所有选项,提高了转发效率。
IPv6 vs IPv4 对比
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 bit | 128 bit |
| 地址表示 | 点分十进制 | 冒分十六进制 |
| 首部长度 | 20~60 字节(可变) | 40 字节(固定) |
| 首部校验和 | 有 | 无 |
| 分片 | 路由器和源主机都可以 | 只在源主机分片 |
| 广播 | 有 | 无(用组播替代) |
| 地址配置 | DHCP / 手动 | SLAAC(无状态自动配置)/ DHCPv6 |
| 安全 | IPsec 可选 | IPsec 内置 |
| 可选功能 | 首部选项字段 | 扩展首部链 |
过渡技术
IPv4 到 IPv6 的过渡不可能一夜完成,需要共存很长时间。三种主要的过渡技术:
双栈(Dual Stack)
一台设备同时运行 IPv4 和 IPv6 两套协议栈。与 IPv4 节点通信时用 IPv4,与 IPv6 节点通信时用 IPv6。
优点是简单直观,缺点是每个节点都要支持两种协议。
隧道(Tunneling)
将 IPv6 数据报封装在 IPv4 数据报的数据部分中,穿越 IPv4 网络。
IPv6网络 ──→ [IPv6报文封装在IPv4中] ──→ IPv4网络 ──→ [解封装] ──→ IPv6网络隧道的两端必须是双栈路由器。
翻译(Translation)
在 IPv4 和 IPv6 之间进行协议转换,类似于 NAT。当通信双方一个只支持 IPv4、另一个只支持 IPv6 时使用。
代表方案是 NAT64/DNS64。
易错点
1. IPv6 取消了首部校验和
这是为了提高路由器转发效率。IPv4 每跳都要重算校验和,IPv6 认为链路层已经有 CRC,上层有 TCP/UDP 校验和,网络层的校验和是多余的。
2. IPv6 不允许路由器分片
IPv6 中,如果数据报太大,路由器不分片,而是返回 ICMPv6"分组太大"报文,让源主机减小报文长度。分片只在源主机进行。
3. IPv6 没有广播
IPv6 用组播来替代广播。这是选择题的常考陷阱。
4. :: 只能出现一次
2001:0:0:1::1 是不合法的缩写(如果原始地址中有两段连续零),因为无法确定 :: 省略了多少组。
高频考点清单
- IPv6 地址 128 位,冒分十六进制表示,:: 只能出现一次
- 三种地址类型:单播、组播、任播(没有广播)
- 首部固定 40 字节,取消了校验和、分片字段、首部长度字段
- IPv6 不允许路由器分片,只在源主机分片
- 三种过渡技术:双栈、隧道、翻译
- 扩展首部链替代了 IPv4 的选项字段