我很了解 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 网络的实践:
因为你们都是 Windows 用户,所以我认为第一本书是 Microsoft Windows 中 IPv6 实现的权威指南。第二本和第三本书适合获得 IPv6 的实践经验。