IPv6的IPv4pipe理介绍

我对IPv4非常了解,但是我从来没有使用过IPv6,也从来没有上过类,也没有阅读有意义的文档。

任何人都可以在IPv4pipe理员的指导下(在线或在书中)指出IPv6。 我主要是Windows而不是UNIX,但我可以遵循大多数的UNIX解释。

TechNet有一个有趣的IPV6页面 。

我去年写了这个内容作为内部参考文档,当时有些工程师被要求将IPv6地址放入DNS时感到困惑。 我没有专门针对DNS,但是大部分的问题似乎都是围绕着地址的格式,而不是“得到”它们的工作方式。 也许这对别人也有用:


所以,首先要承认的是,IPv6地址看起来很丑。 他们是这样。

但我认为这只是因为我们不习惯与他们打交道,我们不明白他们在很低的层面上的含义,就像我们对IPv4地址所做的一样。 我认为需要一段时间才能适应他们,但我们必须从某个地方开始。

另一个要记住的重要的事情是,IPv4地址是32位数字,而IPv6地址是128位数字。 当一个路由器路由或防火墙filter,他们根据这个数字。 一个人如何select显示这个数字是完全武断的,而且大多只是传统。 因此,整个电子邮件解释了人们如何select代表这些数字 – 机器不关心,这些都是他们。

IPv4地址是32位或4个字节。 我们所认为的“真正的”IP地址就是代表该位串的标准方法,将这些位分成4个8位组,每个8位表示一个十进制数,并将这些十进制数分开一段时间。 那么,把随机IP地址172.30.154.249。 当一个路由器“认为”这个IP地址时,它真的这样想:

10101100000111101001101011111001 

我们可以把它翻译成我们自己的forms:

 10101100 = 172 00011110 = 30 10011010 = 154 11111001 = 249 

有时你也可能会看到这些写成纯十进制数字:

 10101100000111101001101011111001 = 2,887,686,905 

目前几乎没有人使用这种forms(*),但这是一种历史上有效的写IPv4地址的方法。 事实上,这种forms在1982年定义了SMTP的RFC821中使用。如果你想手动将邮件路由到特定的机器而不是使用DNS,你可以使用两种不同types的文字。 第一个是括号中熟悉的“虚线四边形”(“user @ [172.30.154.249]”)。 第二个是使用以英镑符号为前缀的IP的小数forms(“user @#2887686905”)。

以上所有内容只是为了将您对IPv4地址如何工作的知识提供给IPv6地址提供一个框架。 正如IPv4是32位数字,IPv6地址是128位数字。 ARIN指派我的真棒公司(**)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号码,这是不好的,你想要一个坚实的方式来区分它们。 另一个是它有很多信息,很多数字和很多空白。 因此,这两个问题都可以通过使用不同的分隔符(冒号(:)而不是句点(。))和hex字节而不是十进制来解决。 在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示例地址以32位完全包含我的IPv4示例结束。 当你用这种风格写作时,这是特别有用的。 在这种情况下,我的IPv6地址如下所示:

 2311:FD67::172.30.145.249 

为了回到我开始使用IPv6的地方,我提到我们已经分配了2311:FD67 / 32。 / 32是一个位掩码,就像在IPv4地址中一样。 这意味着我们已经静态分配了我们可以创build的IPv4地址中的128位中的前32位。 自2311年以来:FD67是32位,这意味着我们从该范围创build的每个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“。

我认为在开始迁移到IPv6之前还需要很长时间,但是我希望这个解释能够帮助您更好地使用它们并引用它们。

再一次,理解我在这里谈论的唯一事情实际上是如何写下一个IPv6地址是非常重要的。 在路由等编号scheme中似乎有很多智能,我还没有掌握,所以我现在可以解决的就是它的样子=)。

(*)我以前在某些软件debugging中已经看到了十进制的IPv4表示,但我几乎肯定这是一个错误或懒惰,我认为在C代码中打印32位整数要比为打印格式化一个虚线的四元组。

(**)我用我的公司名称和前缀

看一下这个:

飓风电动免费IPv6authentication

我可以推荐至less3本书来帮助你理解IPv6networking的实践:

  1. 了解IPv6,第二版 – 微软出版社
  2. IPv6在实践中 – Springer
  3. 迁移到IPv6 – Wiley

既然你是Windows的家伙,我认为第一本书是在Microsoft Windows中实现IPv6的权威指南。 第二和第三本书很好的获得了IPv6的实践经验。