【概述】
为解决 IP 地址耗尽的问题,从分类 IP 的基础上发展出了网络地址转换 NAT、无类别编址 CIDR 的方法,但这两种方法只是延长了 IP 地址分配的结束时间,随着时间的增长 IP 地址总有耗尽的一天
为此,开发了 具有更大地址空间的 IPv6
【与 IPv4 的对比】
与 IPv4 相比,IPv6 具有以下特点:
- 地址长度从 $32bit$ 扩展到了 $128bit$
- 减少不必要的功能,首部字段数减少到仅有 $8$ 个
- 路由一般不对扩展首部检查,同时提供 QoS 服务
- 支持即插即用,自动配置,IPv4 若想自动配置需要采用 DHCP
- 只允许源站进行分片,对于发送时经过的主机和路由器来说,若数据报过大则丢弃,同时向主机发送 ICMP 分组过大报文
- 使用 ICMPv6 版本,其在 ICMP 的基础上又加了一系列的报文(例如:ICMP 分组过大报文)
【IPv6 数据报格式】
下图展示了 IPv6 数据报的一般形式,直观来看,相较于 IPv4 数据报,其将固定字段变为基本首部,将可选字段变为扩展首部,同时,引入了有效载荷的概念
对于 IPv6 的基本首部,具体格式如下:
其中,各字段含义如下:
- 版本:占 $4bit$,指明协议的版本,对于 IPv6 来说,该字段总是 $6$
- 通信量类:占 $8bit$,用来区分不同 IPv6 数据报的类别或优先级,目前正在进行不同的通信量类性能的实验
- 流标号:占 $20bit$,流是网络上从特定源点到特定终点的一系列数据报,流所经过的路径上的路由器都保证指明的服务质量,所有属于同一个流的数据报都具有同样的流标号
- 有效载荷长度:占 $16bit$,有效载荷是指扩展首部与数据部分的长度,指明了 IPv6 数据除基本首部外的字节数,最大值为 $64KB$
- 下一首部:占 $8bit$,相当于 IPv4 的协议字段或可选字段,表示上层协议或第一个扩展首部的类型
- 跳数限制:占 $8bit$,源站在数据报发出时即设定跳数限制,路由器在转发数据报时将跳数限制字段中的值减 $1$,当跳数限制的值为 $0$ 时,就要将此数据报丢弃
- 源地址:占 $128bit$,是数据报的发送站的 IP 地址
- 目的地址:占 $128bit$,是数据报的接收站的 IP 地址
对于目的地址来说,IPv6 可以是以下三种基本类型地址之一:
- 单播:即传统点对点通信
- 多播:也称组播,一点对多点的通信,分组被交付到一组计算机的每台计算机
- 任播:目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机
【地址形式】
IPv6 采用冒号十六进制来表示 IP 地址,即每 $4$ 位二进制数用一个十六进制表示,$128bit$ 的 IP 地址写成 $32$ 个十六进制数,同时,每 $4$ 个十六进制数用冒号隔开
进一步,在上述的记法采用压缩形式,每组中,若有连续的四个 $0$,可用一个 $0$ 来表示四个 $0$,若前面存在连续的 $0$,后面存在一个非零,可将连续的 $0$ 省略
例如,对于 4BF5:0000:000A:...
,可以压缩为 4BF5:0:A:...
此外,在压缩形式的基础上,可采用双冒号记法,即一串连续的 $0$ 可采用 $::$ 来取代,但这种记法在一个 IP 地址中只能出现一次,以便从总位数中推算省略 $0$ 的个数
例如,对于 FF05:0:0:0:0:0:0:B3
,可记为 FF05::B3
【特殊地址】
在 IPv6 中,同样有一些具有特殊用途的地址
地址类型 | 二进制前缀 | IPv6 表示 | 作用 |
---|---|---|---|
未指定 | 全 $0$ | ::/128 |
系统启动之初,尚未分配 IP 地址,对外请求 IP 地址时,作为源地址使用 |
环回地址 | 除最后一位为 $1$ 外,其余全 $0$ | ::1/128 |
用于环回测试 |
多播地址 | 前八位为 $1$,其余全 $0$ | FF00::/8 |
用于多播通信 |
本地链路单播地址 | 前十位为 1111 1110 10 ,其余全 $0$ |
FE80::/10 |
用于本地链路单播通信 |
全球单播地址 | 剩余所有 | 用于全球链路单播通信 |
【从 IPv4 到 IPv6 的过渡】
从 IPv4 到 IPv6 的过渡只能采取逐步演进的方法,同时必须令新安装的 IPv6 系统能够向后兼容,即 IPv6 系统能够接受和转发 IPv4 分组,且能为 IPv4 分组选择路由
目前,采取的过渡方法主要有两种策略:双协议栈技术、隧道技术
双协议栈技术,是指在一台设备上同时安装 IPv4 和 IPv6 协议栈
当设备是主机时,会同时拥有 IPv4 和 IPv6 地址,且具备同时处理两个协议地址的功能;当设备是路由器时,路由器的不同接口上分别配置 IPv4 和 IPv6 地址,且可能分别连接 IPv4 和 IPv6 网络
隧道技术,是将整个 IPv6 分组封装到 IPv4 数据报的数据部分,使 IPv6 数据报可以在 IPv4 网络的隧道中传输