Skip to content

IPv6 基础

考情分析

IPv6 在 408 中属于中低频考点,选择题可能考 IPv6 与 IPv4 的区别、IPv6 地址表示方法、过渡技术等。了解核心差异即可,不需要深入掌握 IPv6 的全部细节。

考频:★★☆

IPv4 地址耗尽的现实困境

IPv4 使用 32 位地址,理论上最多 23243 亿个地址。虽然有 NAT、CIDR 等技术延缓了地址耗尽,但 IPv4 地址早已不够用了(IANA 在 2011 年分配完了最后的 /8 地址块)。

IPv6 使用 128 位地址,地址空间为 21283.4×1038,基本可以认为是"用不完"的。

除了地址空间,IPv6 还在首部格式、安全性、移动性等方面做了改进。

IPv6 地址表示

IPv6 地址是 128 位,用冒分十六进制表示,每 16 位一组,共 8 组:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

缩写规则

  1. 每组中前导零可以省略0db8db800000
  2. 连续的全零组可以用 :: 替代(只能用一次):
原始:  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.xIPv4 映射地址用于兼容
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 做了大量简化:

  1. 取消了首部校验和:每跳重新计算校验和太浪费时间,交给上层协议和数据链路层去做
  2. 取消了分片相关字段:IPv6 中路由器不负责分片,分片信息放在扩展首部中
  3. 取消了首部长度字段:因为 IPv6 首部固定 40 字节,不需要这个字段
  4. 取消了选项字段:用扩展首部链的方式替代,更灵活

扩展首部

IPv6 用扩展首部来实现可选功能(分片、路由、认证等)。扩展首部通过 Next Header 字段串成一条链。

IPv6基本首部 → 扩展首部1 → 扩展首部2 → TCP/UDP首部 → 数据
  (Next=扩展1)   (Next=扩展2)   (Next=TCP)

路由器只需要处理基本首部(和少数扩展首部),不需要像 IPv4 那样检查所有选项,提高了转发效率。

IPv6 vs IPv4 对比

对比项IPv4IPv6
地址长度32 bit128 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 的选项字段