什么是IPv6
2019-07-10刘宏光
其实对于IPv6的基础知识在网上都能查到,而且会说得非常详细,但每个人对IPv6的描述都不一样,因此这里以笔者理解的角度来说明IPv6,同时为了让两者比较更加直观,在这里采用最大的IPv4和最大的IPv6地址做范例,这样看起来也更加饱满,如图1所示。
从以上可以看到IPv4是1组32位的二进制地址,但是我们知道记一串32位1和0不断变化的数字是多么恐怖,而且识别率也非常的低,比如:10111111和11011111,如果就这么扫一眼你可能还真没看出是两个不同的数字。因此为了方便记忆或为了提高识别率,当时的设计者将32位2进制分成4组,每组转换位10进制来记忆,这样我们只需要记忆4个常规数字,比如:192.168.100.2,这样是不是识别度非常高了?并且也方便记忆。
可到IPv6,一下变成128位,这样就有128个1和0变化排成1行,如果用二进制写法去写,估计都要写几分钟,而这几分钟里只怕90%的时间是花在了校对是否写错上。所以设计者们再次变通,以4位为一个极小的小组为单位转换为标准16进制,然后还是以4个为基础用冒号“:”作为分隔符,于是就将128位二进制转为32个16进制。最后一总结,虽然4这个数字在生活中不怎么吉利,但是4在网络里却占据着非常重要的位置。那么笔者就来总结下:
1.IPv6的二进制长度是IPv4的4倍。
2.IPv6二进制转16进制是正好也是4位二进制。
3.IPv6的十六进制又以4位为一组,组合成全长32位16进制。
所以一直用IPv4的朋友要转变为用IPv6的时候,就记住4这个数字,因为什么都和4有关。
可能有人觉得32位16进制同样难以记忆,因此通过一些手段还可以进一步的相对减少一些记忆,下面我们继续。如下IPv6地址:
2019:0000:0000:0000:0 000:0000:0000:0001
我们可以进行简化,我们规定当有连续0的时候,前面的0统统合并或丢弃,就好比我们学数学里0010,前2个0不需要写出来,那4个0自然就合并成1个0,通过简化就成了:
图1 最大的IPv4和最大的IPv6地址举例
2019:0:0:0:0:0:0:1
0是不是还是太多了?不要紧,我们还能继续合并:
2019:::::::1
丢掉没用的0后仅剩下冒号可读性仍然很差,因此将冒号也进行合并,于是经过系列确认后最终变成如下:
2019::1
这表示的方法比IPv4还短了,因此正式规定也就出来了,当有连续丢弃的0的时候,0和冒号都可以省略,改用双冒号表示,但这样的省略在1个IPv6地址里只允许出现1次!
因此在IPv6的世界里,你能经常看到如下的形态:
2019:abc::ab01
fec0:15ae::1:15
3个十六进制数一组的那是因为前面的一个0省略了,1个十六进制数独占一组的是因为前面的3个0省略了,而双冒号就是那一串全省略了。
以上就是用最精简的方式给大家把IPv6的格式进行了一番介绍。