本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第1章,第1.3节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.3 IPv6的特性
下面对IPv6协议的特性进行了归纳:
- 全新的数据包头部格式;
- 广大的地址空间;
- 无状态和状态化的地址配置;
- 对于IPSec头部的支持;
- 对于按照优先级传输的支持更加完善;
- 全新的邻居节点交互协议;
- 扩展性更强。
1.3.1 全新的数据包头部格式
IPv6头部格式经过了全新的设计,其目的是提高处理头部信息的速度。为了实现这一目的,一些不重要的字段和扩展字段都被放到了IPv6头部之后的扩展头部中。由于IPv6头部信息得到了简化,因此中间路由器就能够更高效地处理这些信息了。
IPv4和IPv6头部不能同时使用。IPv6不是兼容了IPv4的超集。因此,主机和路由器必须采用一个IPv4和IPv6通用的实施方法才能同时识别和处理这两类数据包头部。新的IPv6的基本头部只有IPv4的两倍大,却提供了4倍于IPv4地址的位数。
1.3.2 广大的地址空间
IPv6的源地址和目标地址的长度为128位(16字节)。虽然128位的地址已经能够表示出超过3.4 × 1038种组合,但IPv6巨大的地址空间仍然被设计为可以进行多层子网划分与地址分配,以满足从Internet主干网到某个公司子网的不同需求。
即使不包括目前已分配给主机的那部分地址,IPv6仍然有大量地址可供将来使用。而有了如此广大的可用地址空间,NAT这类地址转换技术就再无用武之地了。
1.3.3 无状态和状态化的地址配置
为了简化配置,IPv6同时支持状态化化地址配置(如存在IPv6的DHCP [即DHCPv6]服务器的情况)和无状态地址配置(如没有DHCPv6的情况)。在无状态地址配置中,链路上的主机可以使用链路的IPv6地址(称为本地链路地址)、IPv6过渡地址以及用本地路由器发布的前缀生成的地址,来自动配置自己的地址。
无状态和状态化的地址配置可以同时使用。即使在没有路由器的情况下,同一链路上的主机仍然可以使用本地链路地址来自动配置自己的地址,并在没有人工设置的情况下进行通信。本地链路地址能在数秒内完成配置,并立即和链路上相邻节点进行通信。相比之下,一些用DHCP的IPv4主机则必须等上几分钟的时间才能完成DHCP的配置和自已的IPv4地址配置。
1.3.4 对于IPSec头部的支持
完整的IPv6协议必须支持IPSec头部。这就为网络保护方面的需求提供了标准化的解决方案,也为不同IPv6协议程序之间的互操作提供了便利。IPSec包含两类扩展头部和一个协商安全参数的协议。认证头部(Authentication Header, AH)的作用是负责确保数据的完整性,并对数据进行认证,同时保护(除了IPv6头部中必然会在传输中改变的那些扩展字段之外的)整个IPv6包。封装安全负载(Encapsulating Security Payload, ESP)头部和尾部则负责保障数据的完整性和机密性,对数据进行认证,同时保护ESP封装的负载。用来协商单播通信的IPSec安全设定值的协议往往是IKE(Internet密钥交换)协议。
然而,处理IPSec头部无法从本质上确保IPv6更加安全。IPv6数据包可以无需IPSec的保护;反之,IPSec也不是部署IPv6所必需使用的协议。此外,IPv6标准不需要使用某种程序来支持某些特定的加密方法、哈希方法或协商协议(如IKE)。
1.3.5 对于按照优先级传输的支持更加完善
IPv6头部通过新的字段定义了如何处理和识别数据流。数据流会通过一个“通信类别(Traffic Class)” 字段进行排序,这有点像在IPv4中指定DSCP。IPv6头部中的“流标签(Flow Label)”字段使路由能够识别并对那些属于某个流的数据包(源和目的间的一系列数据包)进行特殊处理。由于这些流量是通过IPv6头部中的信息进行标识的,因此即使包负载通过IPSec和ESP进行了加密,也能实现有序发送。
1.3.6 全新的邻居节点交互协议
IPv6中的邻居节点发现协议是一系列用于管理邻居节点(相同链路上的节点)间交互的IPv6 Internt控制消息协议(Internet Control Message Protocol for IPv6, CICMPv6)消息。邻居节点发现协议使用的是拥有高效的组播1和单播邻居节点发现消息,这个协议取代了地址解析协议(ARP)(基于组播)、ICMPv4路由发现和ICMPv4重定向消息,是这些协议的扩展和延伸。
1.3.7 可扩展
只要在IPv6头部后面添加扩展头部,就可以轻松地对IPv6进行扩展。这不像IPv4头部中的可选字段那样只支持40字节, IPv6扩展头部的大小仅受限于IPv6数据包自身的大小。