分享工作和学习中的点点滴滴,包括前端、后端、运维、产品等各个方面,欢迎您来关注订阅!
分类: LINUX
2019-08-17 00:46:18
ipv6已经逐渐在应用,现在已经有很多的运营商支持ipv6,前天我们也发布了如何让电脑使用ipv6地址?有很多朋友在问?ipv6有什么作用,它的表示方式是什么,今天我们来一起来详细了解下ipv6相关计算与转换。 |
我们现在用的是ipv4的地址是32位,例如这样的,59.123.123.123。总数大约有43亿个左右,地球上每个人平均分不了一个,更别说每台电脑了,还要减去内网专用的192、170地址段,就更少了,到现在为止,就更少了。随着科技的进步与物联网的发展,ipv4显然已经满足不了要求了,严重约束了互联网的应用与发展,所以ipv6应运而生。
那什么是ipv6呢?
IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址。
较之IPv4使用的32位地址,IPv6使用128位地址:
按照地址数的计算方法,我们可以计算出IPv6能够提供的地址数为:
2^128-1个(大约340万亿个)
IPV6地址极为丰富,几乎是取之不尽的,号称地球上的每一粒沙子都能分配到自己的地址,更不用说每台手机、电脑了,连冰箱、洗衣机都能拥有属于自己独一无二的ip地址了,一下子就高大上了不少。
Linux书籍:
ipv6有什么用,这也是很多朋友在问,其实ipv6的好处还是挺多的。
128位的ipv6拥有大量的ip地址,为将来数十年提供了足够的IP地址,巨大的地址空间为数十亿新设备提供了全球唯一地址,就是老百姓也可以拥有公网ip了,在ipv4时期,由于地址有限,只有企业才能申请公网,我们使用的网络都是私有地址,而ipv6,每个设备都可以拥有公网ip,那么拥有了公网能干啥呢?
作用非常多,比如我们项目监控,可以直接用公网ip地址访问了,就能很好的解决监控中远程控制访问问题,异地监控集中控制也就不用那么麻烦了。
对于企业或个人也可以搭建服务器,使用唯一标识的ipv6地址就可以访问这个服务器了,共享文件极其简单。
可以有更快的速度,这个呢,用专业的话讲,人类无法感受到的微小的速度提升,但毕竟还是快了。
更加安全,以前大家会经常莫名其妙的中木马或者病毒,这个在IPv6里会明显减少。
难以想象,手机、电脑、汽车、电视、空调、机器人、、、都分到了一个独一无二ip后,会是怎样的,物联网发展将会只受想象力的限制。
IPV6地址的表示采用16进制的表示方法。将128bit分为8组,每组16比特,用4个16进制数表示,各组之间用":"隔开,每组中最前面的0可以省略,但每组必须得有一个数。
格式为 X:X:X:X:X:X:X:X,其中每个X代表16个bit,以十六进制显示,如下面这些:
ip一:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
ip二:FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
ip三:1080:0:0:0:8:800:200C:417A
在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
1080:0:0:0:8:800:200C:417A =1080::8:800:200C:417A
FF01:0:0:0:0:0:0:101=FF01::101
FF01:0:0:0:0:0:0:1101 = FF01::1101
0:0:0:0:0:0:0:1 = ::1
0:0:0:0:0:0:0:0 = ::
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,
也就是前6组用冒分十六进制表示,后二组用十进制表示,而最后32bit地址则使用IPv4的点分十进制表示,例如::192.168.0.1与就是一个典型的例子 。
上面我们提到了,ipv4地址要与ipv6地址互通,需要将ipv4转换为ipv6地址。
举例:
如果IPv4的一个地址为135.75.43.52,现有32位地址,那么如何转换为ipv6呢?
只需要在ip地址前面6组共96位补充0即可,即
0000:0000:0000:0000:0000:0000:135.75.43.52
也就是::135.75.43.52(内嵌IPv4表示法)
135.75.43.52 按十六进制算出即87.4B.2B.34,
而87.4B.2B.34串地址一组还是8位,所以需要两组v4地址合成v6地址,
再把前96位补零,它可以被转化为
0000:0000:0000:0000:0000:0000:874B:2B34或者::874B:2B34。
补充下:十进制如何转化为16进制?
这里弱电君有必要补充下十进制如何转化为16进制,在ipv6时代,可能会经常需要用到。
方法是:十进制数除以16,反向取余数,除到不能除为止。当然大家听到这个方法可能是一头雾水,我们具体来看下举例计算过程。
例如10进制的ipv4地址:135.75.43.52 ,化成16进制的。
为了方便大家了解原理,具体计算过程可以看下图:
16进制的10、11、12、13、14、15分别用A、B、C、D、E、F来表示。
所以十进制的135.75.43.52 最终得出的是十六进制87.4B.2B.34,转成ipv6就是::874B:2B34。当然也是可以通过工具直接转换。