IP是互联网核心协议。
IPv4的32位地址已经耗尽,解决措施便是采用更大的地址空间的新版本IP,也就是IPv6。
一、IPv6的基本首部
无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,仍采用数据报这一名词。
所引进的主要变化如下:
更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
扩展的地址层次结构。可以划分更多层次。
灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
允许协议继续扩充。
支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
IPv6数据报由两部分组成:
基本首部和后面的有效载荷。
净负荷,其允许有零个或多个扩展首部(扩展首部不属于IPv6首部),再后面就是数据部分。
基本首部:
IPv6把首部中不必要的功能取消了,使得IPv6首部中的字段减少到8个。
与IPv4的区别:
取消了首部长度字段,因为首部长度是固定的 40 字节;
取消了服务类型字段;
取消了总长度字段,改用有效载荷长度字段;
把 TTL 字段改称为跳数限制字段;
取消了协议字段,改用下一个首部字段;
取消了检验和字段,加快了路由器处理数据报的速度。
取消了选项字段,而用扩展首部来实现选项功能。
(1)版本
占4位。表明协议的版本,IPv6该字段为6.
(2)通信量类
占8位。为了区分不同的IPv6数据报的类别或优先级。
(3)流标号
占20位。
IPv6的一个新机制就是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。
流就是互联网上从特定源点到特定终点(单播或轮播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。
所有属于一个流的数据报都具有相同的流标号。
(4)有效载荷长度
(5)下一个首部地址
占8位。相当于IPv4协议的协议字段或可选字段。
当没有扩展首部时,作用等同于IPv4的协议字段。
当有扩展首部时,其值就标识后面第一个扩展首部的类型。
(6)跳数限制
占8位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。
当跳数限制的值为零时,就要将此数据报丢弃。
(7)源地址
占128位。发送端IP地址。
(8)目的地址
占128位。接收端IP地址。
扩展首部介绍:
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
大大提高了路由器的处理效率。
六种扩展首部:
(1) 逐跳选项 (2) 路由选择 (3) 分片
(4) 鉴别 (5) 封装安全有效载荷 (6) 目的站选项
每一个扩展首部都由若干个字段组成,它们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。
二、IPv6的地址
一般来说分为三类:
(1)单播
单播就是传统的点对点通信。
(2)多播
多播就是一点对多点的通信,数据包发送到一组计算机中的每一个,IPv6没有广播的术语,它把广播看作一种特殊的多播。
(3)任播
IPv6新增的一种类型。任播的终点是一组计算机,但数据报只交付其中之一,一般是最近的一个。
结点与接口:
结点。
一个结点就可能有多个与链路相连的接口。
是分配给结点上面的接口的。
一个接口可以有多个单播地址。
其中的任何一个地址都可以当作到达该结点的目的地址。
IPv6地址记法:
在IPv6中,每个地址占 128 位,地址空间大于 3.4×10^38 。 为了使地址再稍简洁些,IPv6 使用冒号十六进制记法。
冒号十六进制记法:
每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六进制记法中,允许把数字前面的0省略。例如把0000中的前三个0省略,写成1个0。上述的例子便把0000省略写成了0.
零压缩:
零压缩,即一连串连续的零可以为一对冒号所取代。
例如:
FF05:0:0:0:0:0:0:B3 可压缩为: FF05::B3
只能使用一次零压缩。
点十进制记法的后缀:
冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
例如:
0:0:0:0:0:0:128.10.2.1
再使用零压缩即可得出: ::128.10.2.1
CIDR斜线记法:
CIDR 的斜线表示法仍然可用。
例如:
60 位的前缀 12AB00000000CD3
可记12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60 (零压缩)
或 12AB:0:0:CD30::/60 (零压缩)
地址分类:
未指明地址
这是 16 字节的全 0 地址,可缩写为两个冒号“::”。
这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。
这类地址仅此一个。
环回地址
即 0:0:0:0:0:0:0:1(记为 ::1)。
作用和IPv4的环回地址一样。
这类地址也是仅此一个。
多播地址
功能和 IPv4 的一样。
这类地址占 IPv6 地址总数的 1/256。
本地链路单播地址
没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。
这类地址占 IPv6 地址总数的 1/1024。
全球单播地址
IPv6 的这一类单播地址是使用得最多的一类。
曾提出过多种方案来进一步划分这128位的单播地址。
根据2006年发布的草案标准RFC 4291的建议, IPv6 单播地址的划分方法非常灵活。
三、从IPv4向IPv6过渡
向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:
IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
1. 双协议栈
装有两个协议栈,一个 IPv4 和一个 IPv6。
一个 IPv6 地址和一个 IPv4 地址。
双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。
恢复成IPv6时,IPv6的某些字段无法恢复,例如流标号。
2. 隧道技术
把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
四、ICMPv6
IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6。
地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中。
ICMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
ICMPv6 还增加了几个定义报文的功能及含义的其他协议。