随着 Internet 的快速发展,IPv4 已经不适用了。
其有 IP 地址空间耗尽问题、安全性问题以及服务质量问题等。
解决 IP 地址耗尽问题的措施如下:
- 采用无类别编址 CIDR,使 IP 地址的分配更加合理
- 采用网络地址转换 NAT 方法以节省全球 IP 地址
- 采用具有更大地址空间的新版本 IP 协议 IPv6
IETF 于 1992 年提出了推出下一代 IP,即 IP Next Generation,也称为 IPv6。
IPv6 于 1998 年称为标准草案,RFC 2460—2463。
IPv6 引入的主要变化有:
- 更大的地址空间,由 IPv4 的 32 位增大到了 128 位
- 扩展的地址层次结构,有多种组织方式
- 灵活的首部格式
- 改进的选项
- 允许协议继续扩充
- 支持即插即用,自动配置
- 支持资源的预分配
IPv6 地址
IPv6 数据报的目的地址可以是三种基本类型地址之一。
- 单播 (unicast):传统的点对点通信
组播/多播 (multicast):一点对多点的通信
- 任意播 (anycast):IPv6 增加的类型,任意播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
IPv6 地址采用冒号十六进制记法 (colon hexadecimal notation)。
每个 16 位的值用十六进制值表示,各值之间用冒号分隔。
例如:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
CIDR 的斜线表示法仍然可用。
例如 60 位前缀的 12AB00000000CD3 可记为:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或者采用零压缩与结合点分十进制的后缀的 12AB::CD30:0:0:0:0/60 与 12AB:0:0:CD30::/60
IPv6 首部
IPv6 的数据报结构如下:
- 首部长度固定为 40 字节,称为基本首部 (base header)
- 取消了不必要的功能,首部字段数减少到 8 个
- 取消了首部的校验和字段,加快了路由器处理数据报的速度
- 在基本首部的后面允许有零个或多个扩展首部
- 所有的扩展首部和数据合起来,称之为数据报的有效载荷 (payload)
基本首部
基本首部的字段数为 8 个。
版本 Version
4 位,协议版本。对于 IPv6 而言,该字段为 6。
流量类别 Traffic class
8 位,用于区分 IPv6 数据报的类别或优先级。
流标号 Flow label
流,是从特定源点到特定终点的一系列数据报。其所经过路径上的路由器都保证特定的服务质量,所有属于同一个流的数据报都具有相同的流标号。
有效载荷长度 Payload length
16 位,标识数据报除去基本首部以外的长度,最大值为 64KB,单位为字节数。
下一个首部 Next header
8 位,相当于 IPv4 的协议字段或可选字段。
跳数限制 Hop limit
8 位,数据报发出时设定跳数限制,路由器在转发数据报时,将该字段的值减 1。
当其为 0 时,则将此数据报丢弃。
源地址 Source address
128 位,数据报发送方的 IP 地址。
目的地址 Destination address
128 位,数据报接收方的 IP 地址。
扩展首部
原 IPv4 首部中的选项功能都放在 IPv6 扩展首部中。
数据报途中所经过的路由器不处理除逐跳选项以外的扩展首部,扩展首部由源和目的站的主机处理,因此路由器的处理效率大大提高。
在 RFC 2460 中,定义了六种扩展首部:
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
IPv4 向 IPv6 过渡
向 IPv6 的过渡只能采用逐步演进的方法,还必须使新安装的 IPv6 系统能够向后兼容。
IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
目前实现 IPv4/IPv6 互操作的技术主要有双协议栈以及隧道技术。
双协议栈 (dual stack)
主机或路由器装有两个协议栈,一个 IPv4 和一个 IPv6,根据需要使用不同的协议栈进行通信。
隧道技术 (tunneling)
将 IPv6 数据报重新封装后,通过 IPv4 网络传输,即 IPv6 数据报作为 IPv4 数据报的数据部分。
重新封装为 IPv4 数据报后,IPv4 包头中协议类型字段为 41