The TCP/IP Guide - Internet Protocol Version 6 (IPv6) / IP Next Generation (IPng)http://www.tcpipguide.com/free/t_InternetProtocolVersion6IPv6IPNextGenerationIPng.htm自 1981 年以来,TCP/IP 就建立在 IPv4之上。 IPv4 是在我们今天认为理所当然的巨大的全球互联网,但却是从一个小型实验网络创建的。 考虑到互联网在过去 20 年的发展和变化,IPv4 的表现令人钦佩。 于此同时,多年的实际表面,如果不解决这个古老协议中的某些限制,将会阻碍 Internet 规模和服务的未来增长。

由于 IP 发挥着关键作用,改变它绝非易事。 这意味着对 TCP/IP 中几乎所有操作方式的重大修改。 然而,即使我们发现改变很困难,我们大多数人都知道这是必要的。 在过去几年中,新版本 IP 的开发一直在进行,正式称为 Internet 协议版本 6 (IPv6),有时也称为 IP Next Generation 或 IPng。 IPv6 有望取代 IPv4,并将成为未来互联网的基础。

在本节中,我将详细介绍 IPv6。由于 IPv6 与 IPv4 一样仍然是 IP,因此它执行相同的功能:寻址、封装、分段和重组,以及数据报传递和路由。 出于这个原因,IPv6 讨论中的小节和主题是在 IPv4 小节中的小节之后设计的。 其中包括对 IPv6 概念和问题的讨论、IPv6 寻址和数据打包的介绍,以及IPv6如何进行分段、重组和路由。

背景信息:由于 IPv6 代表了 IP 的演进,它的许多操作概念都建立在 IPv4 中引入的概念之上。 为避免不必要的重复,本节假设读者熟悉 IPv4 的操作,尤其是寻址和数据报的打包和传递方式。 如果您还没有阅读有关 IPv4 的部分,首先查看它是明智的,因为对 IPv6 的描述侧重于它与当前 IP 版本的不同之处。

相关信息:您可能希望参考有关 ICMP(其中一部分是 ICMPv6 - ICMP for IPv6)和 IPv6 邻居发现 (ND) 协议的部分,因为这些是 IPv6 的“伴侣”。 但是,这不是必需的。

注意:IPv6 显然仍在开发中,因此,编写这样的部分就像试图击中一个移动的目标。 这可能就是大多数 TCP/IP 指南没有过多提及 IPv6 的原因——它一直在变化! 我认为这很重要,因此我将其描述为在发布之日定义的。 但是,由于每个月都会对 IPv6 标准和实施进行更改,因此该特定部分中的信息很可能已过时。 (甚至在发布本指南的第一版之前,我就不得不进行多次修改!)

IPv6 概述、变化和过渡

IPv6 注定是互联网协议的未来,由于 IP 的重要性,它将成为 TCP/IP 和互联网未来的基础。事实上,它自上个十年中期以来一直在开发中,并且真正的 IPv6 互联网也已用于测试多年。尽管如此,许多人对 IPv6 的了解并不多,除了它是一个较新版本的 IP。有些人甚至从未听说过它!当然,我们会纠正这一点——但在深入研究第 6 版中对 IP 寻址、打包、分段和其他功能的重要更改之前,让我们先从 IPv6 的“鸟瞰”视图开始。

在本节中,我将简要介绍 IPv6 的高级概述,包括从总体上看它与 IPv4 的区别。我首先简要概述了 IPv6 以及创建它的原因。我列出了在 IPv6 中所做的主要更改以及当前版本对协议的添加。我还解释了与将庞大的全球互联网从 IPv4 过渡到 IPv6 相关的一些困难。

IPv6 动机和概述

“如果它没有坏,就不要修理它。”我认为这是我最喜欢的民间智慧之一。和大多数人一样,我通常喜欢坚持有效的方法。IPv4 运行得非常好。它已经存在了几十年,并且在互联网从一个小型研究网络发展成为一个全球性强大网络的过程中脱颖而出。所以,就像我们多年来成功运营的值得信赖的旧车一样,如果它仍然可以完成工作,我们为什么要更换它呢?

就像那辆旧车一样,我们可以在可预见的未来继续使用 IPv4。问题是:代价是什么?如果您愿意花时间和金钱来维护和保养它,那么旧车可以保持良好的工作状态。但是,它的某些功能仍将受到限制。它的可靠性可能值得怀疑。它不会有最新的功能。除了那些喜欢在汽车上工作作为爱好的人之外,继续修理旧车最终失去了意义。

在某些方面,这甚至不是一个很好的类比。我们的高速公路与 1970 年代相比并没有太大的不同,在过去的 25 年中,与驾驶汽车相关的大多数其他问题也没有太大变化。是否更新车辆的选择基于实际考虑而不是必要性。

相比之下,看看过去 25 年来计算机和网络世界发生了什么!今天的掌上电脑可以比当时最强大的服务器做更多的事情。网络技术的速度是其 100 倍甚至 1000 倍。连接到全球互联网的人数增加了更大的数量。在许多情况下,计算机通信的方式发生了巨大变化。

IPv4 在某些方面可以被视为经过精心维护和维修的旧汽车。它完成了工作,但它的年龄开始显现。 IPv4 的主要问题是其相对较小的地址空间,这是决定仅使用 32 位 IP 地址的遗留问题。在最初的“分类”地址分配方案下,我们现在可能已经用完了 IPv4 地址。迁移到无类别寻址有助于推迟这一过程,IP 网络地址转换 (NAT) 等技术允许私有寻址的主机访问 Internet。

然而,最终,这些代表了修补工作和不完善的维修,以使 IPv4 的老化汽车继续上路。核心问题是 32 位地址空间对于 Internet 的当前和未来规模来说太小了,只能通过迁移到更大的地址空间来解决。这是创建下一代互联网协议 IPv6 的主要动力。

IPv6 标准

IPv6 代表了自 1981 年 IPv4 正式化以来互联网协议的第一次重大变化。多年来,其核心操作在 1998 年发布的一系列 RFC 中定义,RFC 2460 到 2467。其中最值得注意的是主要的 IPv6 标准, RFC 2460(Internet 协议,版本 6 (IPv6) 规范),以及描述 IPv6 的两个“帮助”协议的文档:RFC 2461,描述 IPv6 邻居发现协议,和 RFC 2463,描述 ICMP 版本 6 (ICMPv6)对于 IPv6。

除此之外,1998 年还创建了两个文档来讨论更多关于 IP 寻址的信息:RFC 2373(IP 版本 6 寻址体系结构)和 RFC 2374(一种 IPv6 可聚合全球单播地址格式)。由于 IPv6 寻址的实施方式发生了变化,这些在 2003 年通过 RFC 3513(互联网协议版本 6 (IPv6) 寻址架构)和 RFC 3587(IPv6 全球单播地址格式)进行了更新。

许多其他 RFC 定义了有关 IPv6 功能的更多细节,还描述了其他 TCP/IP 协议(​​如 DNS 和 DHCP)的 IPv6 兼容版本。 IPv6 在很大程度上仍是一项正在进行的工作,新标准会定期提出和采用。

由于 IPv6 是为下一代互联网设计的 IP 版本,因此有时也称为 IP Next Generation 或 IPng。就个人而言,我不喜欢这个名字;它让我想起了太多星际迷航:下一代。我和妻子定期观看的精彩节目,但仍然如此。无论名称如何,IPv6 或 IPng 旨在将 TCP/IP 和 Internet 带到“前所未有的领域”。 (对不起,我不得不!J)

IPv6的设计目标

寻址问题是创建 IPv6 的主要动机。不幸的是,这让很多人认为,地址空间的扩大是IP唯一的改变,事实并非如此。由于对 IP 进行更改是如此重要,因此很少有人这样做。不仅要纠正寻址问题,还要在许多其他方面更新协议,以确保其可行性。事实上,即使是 IPv6 中的寻址变化,也远远超出了在 IP 地址字段中添加更多位。

设计 IPv6 的一些最重要的目标包括:

更大的地址空间:这是我们之前讨论过的。 IPv6 必须为不断增长的 Internet 提供更多地址。

更好地管理地址空间:希望 IPv6 不仅包含更多地址,而且还需要一种更有效的方式来划分地址空间并使用每个地址中的位。

消除“地址杂物”:像 NAT 这样的技术实际上是弥补 IPv4 地址空间不足的“杂物”。 IPv6 消除了对 NAT 和类似解决方法的需要,允许每个 TCP/IP 设备拥有一个公共地址。

更简单的 TCP/IP 管理:IPv6 的设计者希望解决 IPv4 当前的一些劳动密集型需求,例如需要配置 IP 地址。尽管 DHCP 之类的工具消除了手动配置许多主机的需要,但它只能部分解决问题。

路由的现代设计:与 IPv4 相比,IPv4 是在我们都知道现代互联网会是什么样子之前设计的,而 IPv6 是专门为我们当前互联网中的高效路由而创建的,并且具有未来的灵活性。

更好地支持多播:多播从一开始就是 IPv4 下的一个选项,但对它的支持进展缓慢。

更好地支持安全性:IPv4 是在安全性不是什么大问题的时候设计的,因为 Internet 上的网络数量相对较少,而且它们的管理员通常彼此认识。今天,公共互联网的安全是一个大问题,互联网未来的成功需要解决安全问题。

更好地支持移动性:创建 IPv4 时,还没有移动 IP 设备的概念。与在网络之间移动的计算机相关的问题导致了对移动 IP 的需求。 IPv6 建立在移动 IP 之上,并在 IP 本身内提供移动支持。
IPv6:IP 的演进
同时 IPv6 旨在解决上述问题以及传统 IP 的许多其他问题,我们应该记住,它的变化是进化的,而不是革命性的。在 1990 年代 IETF 的多次讨论中,有人说,在我们更新 IP 的同时,也许我们应该对一种新型的互联网络协议进行彻底的、彻底的改变。最终决定不是这样做,而是定义我们一直在使用的 IP 的更强大版本。

原因很简单:IP 就像我们值得信赖的旧车一样有效。 IPv6 代表了一种更新,它努力增加 IPv4 的最佳特性,而不是让每个人都从头开始使用未经证实的新事物。这种设计确保了从 IPv4 到 IPv6 的变化可能导致的任何痛苦都可以得到管理,并有望最小化。

关键概念:互联网协议的新版本是互联网协议版本 6 (IPv6)。它的创建是为了纠正 IPv4 的一些重大问题,特别是 IPv4 地址空间即将耗尽的问题,并从整体上改进协议的运行,将 TCP/IP 带入未来。

IPv6 的主要变化和补充

在前面的概述中,我解释了创建新版本 IP 的主要动机是解决 IPv4 下的寻址问题。但正如我们在那里看到的那样,新协议还存在许多其他设计目标。一旦决定采取重要步骤来创建与 IP 一样重要的协议的新版本,利用这个机会进行尽可能多的改进是有意义的。

当然,仍然需要担心更改带来的痛苦问题,因此 IPv6 中的每一次潜在更改或添加都必须带来超过其成本的收益。由此产生的设计很好地提供了有用的优势,同时保留了原始互联网协议的大部分核心。以下列表总结了 IPv4 和 IPv6 之间最重要的变化,展示了 IPv6 团队实现新协议设计目标的一些方式:

更大的地址空间:IPv6 地址的长度为 128 位,而不是 32 位。这将地址空间从大约 40 亿个地址扩展到一个天文数字(超过 300 万亿个地址)。

分层地址空间:IPv6 地址大小如此扩大的一个原因是允许它被分层划分以提供大量地址类别中的每一个。

单播地址的分层分配:创建了一种特殊的全球单播地址格式,以允许在整个 Internet 上轻松分配地址。它允许 ISP 和组织级别的多级网络和子网层次结构。它还允许根据底层硬件接口设备 ID(例如以太网 MAC 地址)生成 IP 地址。

更好地支持非单播寻址:改进了对多播的支持,并添加了对新型寻址的支持:任播寻址。这种新的寻址方式基本上是说“将此消息传递给该组中最容易到达的成员”,并可能启用新类型的消息传递功能。

自动配置和重新编号:包括一项规定,以便根据需要更轻松地自动配置主机并重新编号网络和子网中的 IP 地址。还存在一种对路由器地址重新编号的技术。

新数据报格式:重新定义了 IP 数据报格式并赋予了新的功能。每个 IP 数据报的主报头都经过了精简,并添加了支持,以便为需要更多控制信息的数据报轻松扩展报头。

支持服务质量:IPv6 数据报包括 QoS 功能,可以更好地支持多媒体和其他需要服务质量的应用程序。

安全支持:使用身份验证和加密扩展标头和其他功能将安全支持设计到 IPv6 中。

更新的分段和重组程序:IPv6 改变了数据报分段和重组的工作方式,以提高路由效率并更好地反映当今网络的现实。

现代化路由支持:IPv6 协议旨在支持现代路由系统,并允许随着 Internet 的发展进行扩展。

过渡能力:由于从一开始就认识到从 IPv4 到 IPv6 是一项重大举措,因此在许多领域都提供了对 IPv4/IPv6 过渡的支持。这包括互操作 IPv4 和 IPv6 网络、IPv4 和 IPv6 地址之间的映射等计划。
IPv6 的其余部分提供了有关 IP 的这些更改和添加的更多详细信息。您会注意到其中大部分都与寻址有关,因为这是在 IPv6 中进行最多重要更改的地方。当然,路由和寻址密切相关,寻址的变化也对路由产生了很大的影响。

我应该提到的另一个变化是,随着 IPv6 的引入,其他几个与 IP 密切相关的 TCP/IP 协议也必须更新。其中之一是 ICMP,它是 IPv4 最重要的支持协议,它已通过为 IPv6 创建 ICMPv6 进行了修订。除了 TCP/IP 之外,还有邻居发现 (ND) 协议,该协议执行 IPv6 的多项功能,这些功能在IPv4中由 ARP 和 ICMP 完成。

从 IPv4 过渡到 IPv6

Internet 协议是 TCP/IP 协议套件和 Internet 的基础,因此在结构重要性方面与房屋的地基相当。鉴于此,更改 IP 在某种程度上类似于对房屋地基进行重大修改。由于 IP 用于将许多设备连接在一起,实际上就像改变的不仅仅是你的房子,而是世界上的每一个房子!

如何改变房子的地基?很小心。实施 IPv6 时也需要同样谨慎。虽然对大多数人来说 IPv6 是“新事物”,但现实情况是 IPv6 的规划和开发已经进行了近十年,如果我们从头开始,该协议早在几年前就已经准备好采取行动了。然而,IPv4 硬件和软件的安装基础确实非常庞大。这意味着开发 TCP/IP 的人不能只是“翻转开关”并让每个人都转向使用 IPv6。相反,必须计划从 IPv4 到 IPv6 的过渡。

IPv4-IPv6 过渡:不同观点

转型已经在进行中,尽管大多数人并不知道。正如我所说,IPv6 本身的开发已经非常完整,尽管继续改进协议以及开发其他协议的 IPv6 兼容版本的工作仍在继续。 IPv6 的实施始于创建开发网络以测试 IPv6 的运行。这些被连接在一起形成了一个实验性的 IPv6 网络,称为 6BONE(它是短语“IPv6 主干网”的缩写)。这个网络已经运行了好几年。

实验网络非常好,但当然最大的问题是将“真正的”互联网过渡到 IPv6——在这里,意见分歧很快。在一个阵营中,企业、组织和个人非常渴望快速过渡到 IPv6,以获得它在寻址、路由和安全领域所承诺的诸多好处。其他人则采取更为谨慎的态度,指出 1990 年代中期关于 IPv4 即将到来的厄运的可怕预测尚未实现,并认为我们应该花时间确保 IPv6 能够大规模运行。

这两个群体将在未来几年继续拉锯战,但现在看来,潮流正在转向那些想要加快现在长达数年的过渡的人。许多团体和组织正在率先采用 IPv6 作为生产协议。 IPv6 在美国以外的地区有很多支持,其中许多地区由于相对于其规模的分配较小而缺少 IPv4 地址。亚洲就是一个这样的地区,该地区拥有数十亿人口,互联网使用迅速增长,而且 IPv4 地址短缺。

在拥有最大份额的 IPv4 地址的美国(由于美国已经开发了互联网),似乎对快速部署 IPv6 的热情有所降低。然而,即使在这里,2003 年 7 月,当美国国防部 (DoD) 宣布从当年 10 月开始,它将只购买与 IPv6 兼容的网络产品时,IPv6 也获得了重大的“强心剂”。国防部——当然首先负责互联网的发展——希望到 2008 年完全过渡到 IPv6。这可能会对美国其他政府和私人组织的计划产生重大影响。

当然,IPv6 的创建者从一开始就知道过渡将是新协议的一个重要问题。 IPv6 与 IPv4 不兼容,因为寻址系统和数据报格式不同。然而,IPv6 设计人员知道,由于过渡需要很多年,因此他们有必要为 IPv4 和 IPv6 主机提供一种互操作方式。考虑到在任何过渡中总会有“落后者”。就像角落里的旧 Windows 3.11 PC 一样,您仍然需要偶尔使用一次,即使大多数 Internet 是 IPv6,仍然可能有一些设备仍然使用 IPv4,因为它们从未升级。

IPv4-IPv6 过渡方法

由于更改需要时间,IETF 一直在制定具体规定,以允许从版本 4 平稳过渡到版本 6,以及硬件和软件互操作性解决方案,以让较新的 IPv6 设备访问 IPv4 主机。 IPv6 中包含一项技术,允许管理员在 IPv6 地址中嵌入 IPv4 地址。定义了特殊方法来处理互操作性,包括:

“双栈”设备:路由器和其他一些设备可以使用 IPv4 和 IPv6 实现进行编程,以允许它们与这两种类型的主机进行通信。

IPv4/IPv6 转换:“双栈”设备可以设计为接受来自 IPv6 主机的请求,将它们转换为 IPv4 数据报,将数据报发送到 IPv4 目的地,然后类似地处理返回的数据报。

IPv6 的 IPv4 隧道:在它们之间没有完全由支持 IPv6 的路由器组成的路径的 IPv6 设备可以通过在 IPv4 中封装 IPv6 数据报来进行通信。本质上,他们将在 IPv4 之上使用 IPv6;两个网络层。封装的 IPv4 数据报将通过传统的 IPv4 路由器传输。
请记住,这些解决方案通常只解决向后兼容性问题,以允许 IPv6 设备与 IPv4 硬件通信。 IPv4 和 IPv6 之间的前向兼容性是不可能的,因为 IPv4 主机无法与 IPv6 主机通信——它们缺乏关于 IPv6 工作原理的知识。可能会创建某些特殊的调整以允许 IPv4 主机访问 IPv6 主机。但最终,所有重要的 IPv4 设备都希望迁移到 IPv6。

IETF 过去在引入新技术方面做得非常好,并且在 IPv6 过渡方面投入了如此多的努力,因此我非常相信向 IPv6 的过渡将不会出现任何问题(如果有的话)。过渡的一件好事是,目前 IPv4 仍在完成工作,因此无需急于迁移到第 6 版。虽然 CIDR 和 NAT 等技术是“创可贴” IPv4,它们在延长老化协议的使用寿命方面非常成功。

IPv6 寻址

创建 IPv6 的主要动机是纠正 IPv4 中的寻址问题。需要更多地址,但除此之外,IPv6 设计者还需要一种更符合现代互联网络的解释、分配和使用方式。基于此,IPv6 中的许多变化都与 IP 寻址有关也就不足为奇了。 IPv6 寻址方案在总体概念上与 IPv4 寻址相似,但经过彻底改造,以创建一个能够在可预见的未来支持持续的 Internet 扩展和新应用的寻址系统。

本节介绍与 IPv6 下的寻址相关的概念和方法。我首先看一下版本 6 中的一些寻址通用性,包括寻址模型、地址类型大小和地址空间。我讨论了用于 IPv6 地址和前缀的独特且有时令人困惑的表示和符号。然后我看看地址是如何排列和分配到类型中的,首先是对地址空间组成的总体了解,然后是全局单播地址格式。我描述了用于将 IP 地址映射到底层物理网络地址的新方法。然后我将描述特殊的 IPv6 寻址问题,包括保留和私有地址、IPv4 地址嵌入、任播和多播地址,以及地址的自动配置和重新编号。

IPv6 下的寻址在主要的 IPv6 RFC、RFC 2460(互联网协议,版本 6 (IPv6) 规范)中进行了概述。但是,IPv6 寻址的大部分细节都包含在另外两个标准中:RFC 3513(互联网协议版本 6 (IPv6) 寻址体系结构)和 RFC 3587(IPv6 全球单播地址格式)。这些取代了 1998 年标准 RFC 2373(IP 版本 6 寻址架构)和 RFC 2374(一种 IPv6 可聚合全球单播地址格式)。

背景信息:与本指南中的其他 IPv6 部分一样,我们对寻址的看法在某种程度上基于与 IPv4 中寻址方式的对比。在继续之前,我强烈建议彻底了解 IPv4 寻址,包括使用 CIDR 的无类寻址。与 IPv4 寻址部分一样,熟悉二进制数的工作原理以及二进制数和十进制数之间的转换也是一个好主意。关于数据表示和计算数学的背景部分可能会在这方面有所帮助。

IPv6 寻址概述:寻址模型和地址类型

在 IPv6 概述部分,我解释说 IPv6 代表了对 Internet 协议的重大更新,但它的修改和添加是在不改变 IP 工作方式的核心性质的情况下进行的。寻址是可以看到 IPv4 和 IPv6 之间大部分差异的地方,但变化主要在于地址的实现和使用方式。 IPv6 中用于 IP 寻址的整体模型与 IPv4 中的几乎相同。有些方面根本没有改变,而其他方面只是略有改变。

IPv6 中寻址的不变方面
IPv6 寻址模型的一些一般特性与 IPv4 中的基本相同:

寻址的核心功能:寻址的两个主要功能仍然是网络接口识别和路由。路由是通过互联网上的地址结构来实现的。

网络层寻址:IPv6 地址仍然是与 TCP/IP 网络中的网络层相关联的地址,并且与数据链路层(有时也称为物理)地址不同。

每个设备的 IP 地址数:地址仍然分配给网络接口,因此像 PC 这样的常规主机通常会有一个(单播)地址,而路由器对于它所连接的每个物理网络都有多个地址。

地址解释和前缀表示:IPv6 地址类似于无类别 IPv4 地址,因为它们被解释为具有网络标识符部分和主机标识符部分,但描述并未编码到地址本身中。前缀长度编号,使用类似 CIDR 的表示法,用于指示网络 ID 的长度(前缀长度)。

私有地址和公共地址:两种类型的地址都存在于 IPv6 中,尽管它们的定义和使用方式有所不同。

IPv6 地址类型

IPv6 寻址模型的一项重要变化是支持的地址类型。 IPv4 支持三种地址类型:单播、多播和广播。其中,绝大多数实际流量是单播的。 IP 多播支持直到 Internet 建立多年后才得到广泛部署,并且继续受到各种问题的阻碍。出于性能原因,必须严格限制在 IP 中使用广播(我们不希望任何设备能够在整个互联网上广播!)

IPv6 还支持三种地址类型,但有一些变化:

单播地址:这些是 IPv4 中的标准单播地址,每个主机接口一个。

多播地址:这些是代表各种 IP 设备组的地址:发送到多播地址的消息会发送到组中的所有设备。 IPv6 包括比 IPv4 更好的多播功能和更多的多播地址。由于 IPv4 下的多播在很大程度上由于许多硬件设备缺乏对该功能的支持而受到阻碍,因此对多播的支持是 IPv6 的必需而非可选的一部分。

任播地址:当必须将消息发送给组的任何成员但不需要发送给所有成员时,使用任播寻址。通常最容易联系到的组成员会收到消息。如何使用任播寻址的一个常见示例是在组织中的一组路由器之间进行负载共享。
关键概念:IPv6 与 IPv4 一样具有单播和多播地址。然而,在 IPv6 中并没有明确的广播地址概念。添加了一种新类型的地址,即任播地址,以允许将消息发送到一组设备中的任何一个成员。

IPv6 中地址类型更改的影响
广播寻址作为一种独特的寻址方法在 IPv6 中消失了。广播功能是使用多播寻址到设备组来实现的。例如,所有节点所属的多播组可用于在网络中广播。

创建任播寻址的一个重要含义是取消了对 IP 地址的严格唯一性要求。 Anycast 是通过将相同的 IP 地址分配给多个设备来实现的。还必须明确告知设备它们共享一个任播地址,但地址本身在结构上与单播地址相同。

本节其余部分的大部分内容都集中在单播寻址上,因为它是迄今为止最重要的类型。组播和任播寻址分别给予特别注意。

IPv6 地址大小和地址空间

在 IPv6 中引入的所有变化中,最“值得称赞”的就是 IP 地址大小的增加,结果,地址空间大小也增加了。与 IPv4 相比,这些大小有所增加也就不足为奇了——多年来,每个人都知道 IPv4 地址空间太小,无法支持 Internet 的未来。值得注意的是增加了多少,以及对互联网地址的使用方式有何影响。

IPv6 地址大小

在 IPv4 中,IP 地址为 32 位长;这些通常分为四个八位组,每个八位组。理论上的 IPv4 地址空间是 2^32 或 4,294,967,296 个地址。为了增加这个地址空间,我们简单地增加地址的大小;我们为地址大小提供的每一个额外位都会使地址空间增加一倍。基于此,一些人预计 IPv6 地址大小将从 32 位增加到 48 位,或者可能是 64 位。这些数字中的任何一个都会给出相当多的地址。

但是,IPv6 寻址不使用这些数字中的任何一个;相反,IP 地址大小一直跳到 128 位,或 16 个 8 位八位字节/字节。这代表了地址大小的显着增加,这让很多人感到惊讶。

IPv6 地址空间

IPv6 地址的 128 位意味着 IPv6 地址空间的大小,从字面上看,是天文数字; 就像描述星系中恒星数量或到最远脉冲星的距离的数字一样,IPv6 可以支持的地址数量令人难以置信。 请参阅图 94,了解我所说的“天文数字”是什么意思。

Figure 94: A (Poor) Representation of Relative IPv4 and IPv6 Address Space Sizes

I wanted to make a cool graphic to show the relative sizes of the IPv4 and IPv6 address spaces. You know, where I’d show the IPv6 address space as a big box and the IPv4 address space as a tiny one. The problem is that the IPv6 address space is so much larger than the IPv4 space that there is no way to show it to scale! To make this diagram to scale, imagine the IPv4 address space is the 1.6-inch square above. In that case, the IPv6 address space would be represented by a square the size of the solar system. J

由于 IPv6 地址的长度为 128 位,因此如果使用所有地址,理论地址空间为 2128 个地址。这个数字展开后是 340,282,366,920,938,463,463,374,607,431,768,211,456,通常用科学计数法表示为大约 3.4*1038 个地址。这大约是 340 万亿、万亿、万亿个地址。正如我所说,很难掌握这个数字有多大。考虑:

足以将数万亿个地址分配给地球上的每个人的地址。

地球大约有 45 亿年的历史。如果自地球形成以来我们一直以每秒 10 亿个的速度分配 IPv6 地址,那么到现在我们用掉的地址空间不到万亿分之一。

地球表面积约为510万亿平方米。如果一台典型的计算机的占地面积约为十分之一平方米,我们将不得不堆叠 100 亿高的计算机来覆盖整个地球表面,以使用同样万亿分之一的地址空间。
好吧,我想你明白了。很明显,决定使用 128 位地址的一个目标是确保我们永远不会再用完地址空间,而且很可能会出现这种情况。

关键概念:IPv6 地址空间非常非常大。 Ĵ

为什么 IPv6 地址如此庞大?

但是,拥有如此巨大的地址空间也有缺点。考虑一下,即使使用 64 位地址,我们也会有一个非常大的地址空间:264 是 18,446,744,073,709,551,616 或大约 1800 万万亿,可能仍然比我们需要的更多地址。然而,通过改为 128 位,我们使处理 IP 地址变得不规则(正如我们将在下一个主题中看到的那样)并且我们还增加了开销,因为每个数据报头或引用 IP 地址的其他位置必须使用 16 个字节对于每个地址,而不是 IPv4 中需要的 4 个,或者 64 位地址可能需要的 8 个。

那么为什么要使用 128 位“矫枉过正”呢?主要原因是灵活性。即使如果我们一次分配一个地址,我们可以拥有数以亿计的地址,但这会使分配变得困难。我们在 IPv4 中摆脱了面向类的寻址,因为它浪费了地址空间,这是事实。然而,现实是能够“浪费”地址空间是一种有用的奢侈品。

拥有 128 位允许我们划分地址空间并将各种用途分配给不同的位范围,同时仍然不必担心空间不足。在描述 IPv6 全球单播地址格式的主题中,我们将看到充分利用这 128 位的一种方法;它允许我们创建网络层次结构,同时仍然为主机 ID 节省 64 位,这有其自身的优势。

将 IP 地址的大小从 32 位增加到 128 位,将地址空间扩展到一个巨大的大小,确保我们永远不会再用完 IP 地址,并允许我们灵活地分配和使用它们。不幸的是,这种方法有一些缺点,其中之一是 128 位数字非常大,这使得它们笨拙且难以使用。

IPv6 地址:对于点分十进制表示法来说太长了

计算机以二进制形式工作,它们处理一长串的 1 和 0 没有问题,但人类发现它们令人困惑。即使是 IPv4 的 32 位地址对我们来说处理起来也很麻烦,这就是我们使用点分十进制表示法的原因,除非我们需要以二进制形式工作(如子网划分)。但是,IPv6 地址比 IPv4 地址大得多,以至于即使使用点分十进制表示法也会出现问题。要使用这种表示法,我们会将 128 位分成 16 个八位字节,并用 0 到 255 之间的十进制数表示每个字节。但是,我们最终得到的不是这些数字中的 4 个,而是 16 个。这种表示法中的典型 IPv6 地址将出现如下:

128.91.45.157.220.40.0.0.0.0.252.87.212.200.31.255
该地址的二进制和点分十进制表示显示在图 95 顶部附近。无论哪种情况,“优雅”这个词都不会完全浮现在脑海中。

Figure 95: Binary, Decimal and Hexadecimal Representations of IPv6 Addresses

The top two rows show binary and dotted decimal representations of an IPv6 address; neither is commonly used (other than by computers themselves!) The top row of the lower table shows the full hexadecimal representation, while the next two rows illustrate zero suppression and compression. The last row shows mixed notation, where the final 32 bits of an IPv6 address are shown in dotted decimal notation. This is most commonly used for embedded IPv4 addresses.

IPv6 地址十六进制表示法

为了使地址更短,IPv6 决定将表达地址的主要方法更改为使用十六进制而不是十进制。这样做的好处是它需要更少的字符来表示地址,并且从十六进制转换为二进制并再次转换回来比从二进制转换为十进制或反之亦然容易得多。缺点是许多人,甚至是计算机人员,发现十六进制难以理解和使用,特别是因为每个数字中的 16 个值的概念有点奇怪。 (我不是其中之一,但我是个极客。)

用于 IPv6 地址的十六进制表示法类似于用于 IEEE 802 MAC 地址的相同方法,用于以太网等技术。在那里,48 位由六个八位字节表示,每个八位字节是一个从 0 到 FF 的十六进制数,用破折号或冒号分隔,如下所示:

0A-A7-94-07-CB-D0
由于 IPv6 地址较大,它们改为分组为 8 个 16 位字,用冒号分隔,以创建有时称为冒号的十六进制表示法,如图 95 所示。因此,上面示例中给出的 IPv6 地址将表示作为:

805B:2D9D:DC28:0000:0000:FC57:D4C8:1FFF
为了减小尺寸,可以在符号中抑制前导零,因此我们可以立即将其简化为:

805B:2D9D:DC28:0:0:FC57:D4C8:1FFF
唔。好吧,它肯定比点分十进制短,但看起来仍然不是很有趣。当你处理这么大的数字时,你能做的只有这么多。这就是为什么在 IPv6 下,主机使用 DNS 名称变得比在 IPv4 中重要得多的部分原因;谁能记住这么长的十六进制地址?!

IPv6 地址中的零压缩

幸运的是,有一种捷径可用于进一步缩短某些地址。这种技术有时称为零压缩。该方法允许将 IPv6 地址中的单个连续零字符串替换为双冒号。因此,例如,上面的地址可以表示为:

805B:2D9D:DC28::FC57:D4C8:1FFF
我们知道有多少个零被“::”替换,因为我们可以看到地址中有多少完全表达(“未压缩”)的十六进制字。在这种情况下有六个,所以“::”代表两个零字。为防止歧义,双冒号在任何 IP 地址中只能出现一次,因为如果它出现多次,我们无法判断每个实例中替换了多少个零。因此,如果我们的示例地址是 805B:2D9D:DC28:0:0:FC57:0:0,我们可以替换第一对零或第二对零,但不能同时替换两者。

零压缩并没有使我们的示例更短,但是由于 IPv6 地址的结构,长的零字符串很常见。例如,考虑这个地址:

FF00:4501:0:0:0:0:0:32
通过压缩,这可以表示为:

FF00:4501::32
它在特殊地址上效果更好。完整的 IPv6 环回地址为:

0:0:0:0:0:0:0:1
通过压缩,这很简单:

::1
为了更有趣,考虑更奇怪的 IPv6“未指定”地址:

0:0:0:0:0:0:0:0
对全为零的地址应用零压缩,你会得到什么?这是正确的:

::
根本没有数字!当然,将“::”视为地址确实需要一些时间来适应。

关键概念:为简洁起见,IPv6 地址使用八组四个十六进制数字表示,这种形式称为冒号十六进制表示法。称为零抑制和零压缩的附加技术用于通过从地址表示中去除不必要的零来进一步减小显示地址的大小。

IPv6 混合表示法

在某些情况下还使用了另一种表示法,特别是用于表示嵌入 IPv4 地址的 IPv6 地址。对于这些,以旧的点分十进制表示法显示地址的 IPv4 部分很有用,因为这是我们用于 IPv4 的。由于嵌入使用 IPv4 地址的最后 32 位,因此该表示法的前 96 位采用冒号十六进制表示法,后 32 位采用点分十进制表示法。因此,从上面再次举同样的例子,在混合符号中,它将显示为:

805B:2D9D:DC28::FC57:212.200.31.255
这并不是混合表示法的一个很好的例子,因为嵌入通常涉及一长串零,后跟 IPv4 地址。因此,零压缩在这里非常方便。而不是看到这样的东西:

0:0:0:0:0:0:212.200.31.255
您通常只会看到:

::212.200.31.255
乍一看,这似乎是一个 IPv4 地址。您必须密切关注 IPv6 中的那些冒号!

关键概念:为最后 32 位包含嵌入式 IPv4 地址的 IPv6 地址定义了一种特殊的混合符号。在此表示法中,前 96 位以常规冒号十六进制表示法显示,最后 32 位以 IPv4 样式的点分十进制表示。

IPv6 地址前缀长度表示

与 IPv4 无类别地址一样,IPv6 地址从根本上分为多个网络 ID 位,然后是多个主机 ID 位。网络标识符称为前缀,使用的位数是前缀长度。该前缀通过在地址后面加上一个斜杠,然后将前缀长度放在斜杠后面来表示。这与使用 CIDR 进行无类 IPv4 寻址的方法相同。例如,如果示例地址的前 48 位是网络 ID(前缀),那么我们将其表示为 805B:2D9D:DC28::FC57:D4C8:1FFF/48。

关键概念:在 IPv6 中,地址前缀的大小由地址后面的前缀长度表示,用斜杠分隔,就像在 IPv4 无类别寻址中所做的那样。

与 IPv4 一样,整个网络的说明符通常以一长串零结尾。这些可以使用零压缩替换为“::”。例如,上例的 48 位网络 ID 为 805B:2D9D:DC28:0:0:0:0:0/48 或 805B:2D9D:DC28::/48。如果替换尾随零,则必须包括“::”。

IPv6 地址空间分配

在与非常小的 IPv4 地址空间打交道这么多年之后,IPv6 中海量的地址一定让 IETF 工程师感觉像是糖果店里的孩子。然而,他们是好孩子,并没有疯狂地抓起他们能找到的所有糖果并狼吞虎咽。他们非常仔细地考虑了如何为各种用途划分地址空间。当然,当你有这么多糖果时,分享变得非常容易。

初始 IPv6 地址空间分配计划和格式前缀 (FP)

与 IPv4 的情况一样,决定如何划分 IPv6 地址空间的两个主要问题是地址分配和路由。 IPv6 的设计者希望构建地址空间,以便尽可能轻松地为 ISP、组织和个人分配地址。

起初,这或许具有讽刺意味,这导致 IPv6 的创建者重新回到使用特定位序列来识别不同类型的地址,就像旧的“分类”寻址方案一样。地址类型由地址开头的一组位表示,称为格式前缀 (FP)。格式前缀在概念上与 IPv4 “分类”寻址中用于表示地址类别的 1 到 4 位相同,但长度可变,范围从 3 到 10 位。格式前缀在 RFC 2373 中进行了描述。

在 RFC 2373 发布后的几年里,运营 Internet 的专家们改变了关于如何考虑地址块的想法。他们仍然希望将 IPv6 地址空间划分为不同大小的块以用于不同目的。然而,他们意识到许多人(包括我自己)开始考虑使用格式前缀等同于旧的面向类的 IPv4 系统。

他们主要担心的是,实现者可能会对 IPv6 硬件逻辑进行编程,以仅根据地址的前几位做出路由决策。这不是 IPv6 应该如何工作的。一方面,分配可能会发生变化。因此,在 RFC 3513 中所做的修改之一是更改有关 IPv6 地址分配的语言,特别是从标准中删除术语“格式前缀”。

当前 IPv6 地址空间分配计划

地址空间的不同部分的分配仍然基于地址的前三到十位的特定模式来完成,以允许某些类别比其他类别拥有更多的地址。 删除表示这一点的特定术语是为了表明不应“特别注意”这些位。

表 60 显示了 IPv6 地址空间的分配,以及每个地址空间占总地址空间的比例:

Table 60: IPv6 Address Space Allocations

Leading Bits

Fraction of Total IPv6 Address Space

Allocation

0000 0000

1/256

Unassigned (Includes special addresses such as the Unspecified and Loopback addresses)

0000 0001

1/256

Unassigned

0000 001

1/128

Reserved for NSAP Address Allocation

0000 01

1/64

Unassigned

0000 1

1/32

Unassigned

0001

1/16

Unassigned

001

1/8

Global Unicast Addresses

010

1/8

Unassigned

011

1/8

Unassigned

100

1/8

Unassigned

101

1/8

Unassigned

110

1/8

Unassigned

1110

1/16

Unassigned

1111 0

1/32

Unassigned

1111 10

1/64

Unassigned

1111 110

1/128

Unassigned

1111 1110 0

1/512

Unassigned

1111 1110 10

1/1024

Link-Local Unicast Addresses

1111 1110 11

1/1024

Site-Local Unicast Addresses

1111 1111

1/256

Multicast Addresses

这比 IPv4 的“分类”方案更复杂,因为有更多的类别并且它们的大小范围很大,但是,它们中的大多数目前都没有分配。

将 IPv6 地址空间计划视为“八分之八”

理解该表的一种更简单的方法是考虑将 IPv6 地址空间划分为八分之一。在这八组中,一组(001)已保留用于单播地址;第二个(000)用于划分较小的保留块,第三个(111)用于本地和多播地址的子块。五个完全未分配。

您可以看到,IPv6 设计者非常小心地只分配了他们认为每种类型的地址需要的地址空间的“八分之二”。例如,仅使用了以“111”开头的地址空间的一小部分,而将大部分留在一边。现在总共只分配了 71/512 的地址空间,即大约 14%。其余 86% 未分配并保留以备将来使用。 (请记住,即使是 IPv6 地址空间的 1/1024 也是巨大的——它代表了数万亿个地址。)

本节中的后续主题提供了有关其中几个地址块的更多信息。请注意,“0000 0000”保留块用于几种特殊地址类型,包括环回地址、“未指定”地址和 IPv4 地址嵌入。 “1111 1111”格式前缀标识组播地址;该字符串是十六进制的“FF”,因此任何以“FF”开头的地址都是 IPv6 中的多播地址。

IPv6 全球单播地址格式

预计单播寻址将用于 IPv6 下的绝大多数 Internet 流量,就像旧的 IPv4 一样。正是由于这个原因,IPv6 地址空间的最大分配块专用于单播寻址。巨大的 IPv6 地址“饼”的完整 1/8 切片被分配给单播地址,这些地址由地址的前三位中的“001”表示。那么问题是:我们如何使用我们宽敞的 IP 地址中剩余的 125 位?

结构化单播地址块的基本原理

最初创建 IPv4 时,Internet 相当小,分配地址块的模型基于中心IANA协调。每个想要地址块的人都会直接去中央机构。随着互联网的发展,这种模式变得不切实际。今天,IPv4 的无类别寻址方案允许可变长度的网络 ID 和地址块的分层分配。大型 ISP 从中央机构获得大块,然后将它们细分并分配给他们的客户,依此类推。这由当今的 Internet 提供商管理,但地址空间中没有任何东西可以帮助管理分配过程。反过来,每个组织都有能力进一步细分其地址分配以适应其内部需求。

IPv6 的设计者从这一经验中受益,并意识到设计单播地址结构以反映 Internet 的整体拓扑结构将具有巨大的优势。这些包括:

在 Internet 拓扑层次结构的各个级别上更轻松地分配地址块。

IP 网络地址自动反映路由器在 Internet 上移动信息的层次结构,允许轻松聚合路由以实现更有效的路由。

ISP 等组织可以灵活地为客户细分其地址块。

最终用户组织可以灵活地细分其地址块以匹配内部网络,就像在 IPv4 中进行子网划分一样。

对 IP 地址具有更大的“意义”。不再只是一个没有结构的 128 位字符串,而是可以查看一个地址并了解它的某些内容。

Internet Protocol Version 6 (IPv6) / IP Next Generation (IPng)相关推荐

  1. RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6 (IPv6)

    RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6--IPv6 1.摘要 2.介绍 3.术语 3.1 通用 3.2 Link Types 3.3 ...

  2. 网际协议(IP,Internet Protocol)

    网际协议(IP)是开放系统互联模型(OSI model)的一个主要协议,也是TCP/IP中完整的一部分.尽管"因特网"(Internet)这个词在协议的名字里出现,但其使用范围却超 ...

  3. IP(Internet Protocol)网际协议

    文章目录 IP协议 IP协议介绍 IP基础知识: IP分包和组包 IP属于面向无连接型 IP协议 TCP/IP四层模型 ​ 很多人都以为TCP/IP是指TCP与IP两种协议.实际中有时也指这两种协议, ...

  4. Ad Hoc Networks TOPIC THREE <IP Addressing and Internet Protocol>【Personal Notes】

    Ad Hoc Networks TOPIC THREE Classful IP Address Structure Private IP addresses Router--connect diffe ...

  5. TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)

    TCP/IP协议 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇.T ...

  6. TCP/IP Model: Layers Protocol | What is TCP IP Stack?

    目录 What is the TCP/IP Model? TCP Characteristics Four Layers of TCP/IP model Application Layer The f ...

  7. POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”

    POP3 锁定 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . POP3,全名为"Post Office Protocol - Version 3" ...

  8. [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is

    文章目录 项目场景 问题描述 解决方案 方案一:修改jdk(推荐) 方案二:修改idea 测试连接 项目场景 Idea使用DateSource插件连接SqlServer数据库报错 问题描述 [08S0 ...

  9. 论文阅读2018:Internet Protocol Cameras with No Password Protection: An Empirical Investigation

    Internet Protocol Cameras with No Password Protection: An Empirical Investigation 作者 知识点 insecam.org ...

最新文章

  1. 剑指offer03.数组中重复的数字
  2. mysql平均值函数保留两位小数点_用sql的avg(score)求完平均值后,保存两位小数的方法(用于查询或视图)...
  3. Web Service概念梳理
  4. c语言中lookup函数功能,Lookup函数详解
  5. c语言malloc calloc,C语言内存管理:malloc、calloc、free的实现
  6. 第 39 章 ThinkPHP--CURD 操作
  7. 拼接的option会多出空行_Word空格,空行,页眉横线等问题,我只花一分钟就全解决了...
  8. mfix中统计气泡体积
  9. Excel工作簿的拆分
  10. 人工智能机器学习算法
  11. Appium 简明教程
  12. 中标麒麟安装php环境,中标麒麟V6下wine完美运行通达信
  13. 浏览器内核信息和功能查看
  14. linux如何更改主题颜色,修改Ubuntu主题的颜色
  15. 使用vue+elementUI页面实现前端做分页
  16. 本地.m3u8播放器实现
  17. 计算机中的成绩排名相同怎么弄,Excel:重复名次也可以查姓名成绩EXCEL基本教程 -电脑资料...
  18. 网络系统结构与设计的基本原则
  19. 天气未能成为空调市场助力,格力等空调老大或发起价格战
  20. 创意卡通黑板风格通用课件PPT模板

热门文章

  1. 基于B/S模式的学校教材信息管理系统设计
  2. Windows系统下php安装扩展mbstring
  3. ps裁剪和裁切的区别_PS中裁切与裁剪命令
  4. QSoundEffect播放wav没有声音,提示 using null output device, none available.
  5. openKylin 0.7.5 更新版本发布,完成 KMRE 适配,并修复 150+ 已知 Bug!
  6. xshell文件传输
  7. 贪吃蛇游戏(C语言实现)
  8. Linux重装系统根目录要多大,安装系统要多大的u盘linux系统
  9. CSDN新最投放的论坛广告,很雷很创意
  10. js实现常见排序算法