Answers:
TechNet上有一个有趣的IPV6页面。
去年,当我的一些工程师被要求将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号码,这不好,您需要一种可靠的方式来区分它们。另一个是它包含大量信息,大量数字和大量空白。因此,通过使用不同的分隔符(用冒号(:)代替period(。))并用十六进制而不是十进制表示字节来解决这两个问题。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地址中一样。从本质上讲,这意味着我们已经静态分配了我们可以创建的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之间的每个IP: 0:0:0:0和2311:FD67:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF”。
我认为距离开始迁移到IPv6尚需很长时间,但我希望这种解释可以帮助您更轻松地使用和引用它们。
同样,了解我在这里谈论的唯一一件事实际上是如何记下IPv6地址,这一点非常重要。路由等编号方案中似乎内置了很多智能,我实际上还没有掌握,所以我现在只能解决的是=)。
(*)我之前在一些软件调试中已经看到过十进制的IPv4表示形式,但是我几乎肯定这是一个错误或懒惰,我认为在C代码中快速打印32位整数要比打印更快。格式化一个虚线四边形以进行打印。
(**)我的公司名称和前缀都已删除
看一下这个:
以下链接非常有用(关于IPv6):
http://www.personal.psu.edu/dvm105/blogs/ipv6/(IPv6上的第一人称帐户-博客)
http://www.tcpipguide.com/free/t_InternetProtocolVersion6IPv6IPNextGenerationIPng.htm
http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_9-3/ipv6_internals.html
http://www.spirentcom.cn/download/Poster/ProtocolPoster_IPv6.pdf(可打印的IPv6海报)
我可以建议至少三本书来帮助您了解IPv6网络的实践:
由于您是Windows专家,因此我认为第一本书是Microsoft Windows中IPv6实施的权威指南。第二本书和第三本书很好地获得了IPv6的实践经验。