《深入解析IPv6(第3版)》——1.3 IPv6的特性

简介:

本节书摘来自异步社区《深入解析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数据包自身的大小。

相关文章
|
17天前
|
C语言 C++ 开发者
深入探索C++:特性、代码实践及流程图解析
深入探索C++:特性、代码实践及流程图解析
|
2月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88376 1
|
12天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
12天前
|
供应链 NoSQL 关系型数据库
MongoDB中的事务处理与ACID特性深度解析
【4月更文挑战第30天】MongoDB从4.0版开始支持多文档事务,以满足对数据一致性和可靠性的需求。本文深入探讨了MongoDB的事务处理机制及ACID特性:原子性保证操作全执行或全不执行;一致性确保事务前后数据库状态符合业务规则;隔离性通过MVCC和乐观锁防止并发影响;持久性借助Write Concern确保数据持久化。事务适用于金融交易等高一致性场景,但在使用时需评估业务需求和数据访问模式。
|
13天前
|
安全 Java API
Java 8新特性深度解析
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API、Optional类等,以及这些新特性如何改变我们编写Java代码的方式。
|
17天前
|
开发框架 Dart Java
Flutter的核心:Dart语言基础——语法与特性深度解析
【4月更文挑战第26天】Flutter框架背后的Dart语言,以其简洁的语法和独特特性深受开发者喜爱。本文深入解析Dart的语法与特性,如类型推导、动态静态类型系统、统一的类接口、访问权限控制以及并发编程支持。了解并掌握Dart,能助开发者更高效地利用Flutter构建高性能移动应用。
|
18天前
|
Java
Java 9新特性解析与实践
【4月更文挑战第24天】本文主要介绍Java 9的新特性,包括模块系统、JShell、JLink等。通过实例代码和应用场景,帮助读者深入理解这些特性的使用和优势,提高Java开发效率。
|
19天前
|
缓存 安全 JavaScript
PHP 7.4新特性解析与实践
【4月更文挑战第24天】 在这篇文章中,我们将深入探讨PHP 7.4版本的新特性,并通过实际示例代码展示如何将这些新特性应用于日常开发工作中。我们将重点介绍预加载优化、类型化属性、箭头函数等重要更新,并分析这些新特性对性能和编码习惯的影响。通过本文,读者将获得对PHP 7.4新特性的全面理解,以及如何有效地利用这些新工具来提升代码质量和开发效率。
|
19天前
|
Rust 安全 程序员
Rust vs Go:解析两者的独特特性和适用场景
在讨论 Rust 与 Go 两种编程语言哪种更优秀时,我们将探讨它们在性能、简易性、安全性、功能、规模和并发处理等方面的比较。同时,我们看看它们有什么共同点和根本的差异。现在就来看看这个友好而公平的对比。
|
23天前
|
Java API 开发者
Java 8新特性解析及其在企业级开发中的应用
【4月更文挑战第19天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API、Optional类等,并结合实例分析这些新特性在企业级开发中的优势和应用。通过阅读本文,您将了解到Java 8的新增功能以及如何在项目中灵活运用这些功能,提高代码质量和开发效率。

推荐镜像

更多