IPv4 管理员的 IPv6 简介

IPv4 管理员的 IPv6 简介

我很了解 IPv4,但从未使用过 IPv6,也从未上过有关它的课程或读过有意义的文档。

有谁能为 IPv4 管理员提供一份关于 IPv6 的优秀介绍(在线或书籍)。我主要使用 Windows 而不是 UNIX,但我能理解大多数 UNIXy 解释。

答案1

TechNet 有一个有趣的IPV6 页面

答案2

去年,当我们的一些工程师被要求将 IPv6 地址放入 DNS 时感到困惑时,我写了这篇文章作为内部参考文档。我没有专门讨论 DNS,但大多数担忧似乎围绕着地址的格式,而不是“了解”它们是如何工作的。也许它对其他人也会有用:


因此,首先要承认的是 IPv6 地址看起来确实很丑陋。

但我认为这只是因为我们不习惯处理它们,我们不明白它们在非常低层次上的含义,就像我们理解 IPv4 地址一样。我认为需要一段时间才能适应它们,但我们必须从某个地方开始。

另一件需要记住的重要事情是,IPv4 地址是 32 位数字,而 IPv6 地址是 128 位数字。当路由器路由或防火墙过滤时,它们会根据该数字进行操作。人类选择如何显示该数字完全是任意的,而且大多只是传统。因此,整封电子邮件都解释了人类如何选择表示这些数字 - 机器并不关心,对它们来说,一切都是位。

IPv4 地址为 32 位,即 4 个字节。我们所认为的“真实” IP 地址只是表示该位串的标准方法,将位分成 4 个 8 位组,将每 8 位表示为十进制数,并用句点分隔这些十进制数。因此,以随机 IP 地址 172.30.154.249 为例。当路由器“思考”这个 IP 地址时,它实际上是这样思考的:

10101100000111101001101011111001

我们可以将其转化为我们自己的形式:

10101100 = 172

00011110 = 30

10011010 = 154

11111001 = 249

有时您可能还会看到这些写为纯十进制数:

10101100000111101001101011111001 = 2,887,686,905

几乎没有人会故意使用这种形式 (*),但它是历史上有效的 IPv4 地址书写方式。事实上,这种形式在 1982 年定义 SMTP 的 RFC821 中使用。如果您想手动将邮件路由到特定机器而不是使用 DNS,则可以使用两种不同类型的文字。第一种是熟悉的括号中的“点分四元组”形式(“user@[172.30.154.249]”)。第二种是使用带有井号前缀的 IP 的十进制形式(“user@#2887686905”)。

以上所有内容仅提供一个框架,用于将您对 IPv4 地址工作原理的了解转换为 IPv6 地址。正如 IPv4 是 32 位数一样,IPv6 地址是 128 位数。ARIN 为 MY AWESOME COMPANY(**) 分配了 IP 范围 2311:FD67/32。为了有示例可供使用,我将使用 IP 2311:FD67::AC1E:9AF9。

因此,这是代表 ip6 的位字符串:

00100011000100011111110101100111000000000000000000000000000000000000000000000000000000000000000010101100000111101001101011111001

如果我们按照 IPv4 位串的方式表示这些位串(将每个 1 字节块转换为十进制,用句点分隔每个块),我们将得到以下内容:

35.17.253.103.0.0.0.0.0.0.0.0.172.30.154.249

这有几个问题。首先,它看起来像一个奇怪的 IPv4 号码,这并不好,你需要一种可靠的方法来区分它们。另一个是它是一个很多信息量大,数字多,空格多。因此,通过使用不同的分隔符(冒号 (:) 代替句点 (.))和用十六进制而不是十进制表示字节,这两个问题都得到了解决。IPv4 用句点分隔 8 位块(以十进制表示),而 IPv6 用冒号分隔 16 位块。因此,下面是我们的 IPv6 示例 IP 的细分:

0010001100010001 = 2311

1111110101100111 = FD67

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

1010110000011110 = AC1E

1001101011111001 = 9AF9



2311:FD67:0:0:0:0:AC1E:9AF9

这其中仍有很多空白,因此允许省略最大的零串并用双冒号表示。因此,上述 IP 可以写成:

2311:FD67::AC1E:9AF9

我很少看到这种情况,但据我所知,还有一种巧妙的约定,允许将最后 32 位写为带前缀的点分四组,以便在从 IPv4 迁移到 IPv6 时轻松识别旧地址。因此,您可能注意到我的 IPv6 示例地址以与我的 IPv4 示例相同的 32 位结尾。当您以这种风格书写时,这尤其有用。在这种情况下,我的 IPv6 地址将如下所示:

2311:FD67::172.30.145.249

回到我刚开始讨论 IPv6 的地方,我提到我们被分配了 2311:FD67/32。/32 是一个位掩码,就像 IPv4 地址中的一样。这实际上意味着我们被静态分配了我们可以创建的 IPv4 地址中的 128 位中的前 32 位。由于 2311:FD67 是 32 位,这意味着我们从该范围创建的每个 IP 地址都将以此开头。

换句话说,正如 172.17/16 可以被认为是“172.17.0.0 和 172.17.255.255 之间的每个 IP”一样,2311:FD67/32 可以被认为是“2311:FD67:0:0:0:0:0:0 和 2311:FD67:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 之间的每个 IP”。

我认为我们开始迁移到 IPv6 还需要很长时间,但我希望这个解释可以帮助您更轻松地使用和参考它们。

再次强调,真正重要的是要理解我在这里谈论的唯一内容是如何写下 IPv6 地址。路由编号方案等似乎内置了很多智能,但我还没有真正掌握,所以我现在只能说它是什么样子 =)。

(*) 我以前在某些软件调试中看到过十进制 IPv4 表示,但我几乎确信这是一个错误或懒惰,我认为在 C 代码中打印 32 位整数比格式化点分四组进行打印要容易得多。

(**)我弄错了公司名称和前缀

答案3

答案4

我可以推荐至少 3 本书来帮助你了解 IPv6 网络的实践:

  1. 理解 IPv6,第二版 - 微软出版社
  2. IPv6 实践 - Springer
  3. 迁移到 IPv6 - Wiley

因为你们都是 Windows 用户,所以我认为第一本书是 Microsoft Windows 中 IPv6 实现的权威指南。第二本和第三本书适合获得 IPv6 的实践经验。

相关内容