我在考虑增加记录用户IP信息的时候,想到我应该考虑到兼容IPv6。于是在网上找了一些相关资料,汇总整理如下:IPv6 比 IPv4 的好处就不罗列了,网上这样的文章很多的。
IPv6 的记录长度要比IPv4 的15位要长很多,以前没有考虑兼容IPv6的都需要增加长度。
目前的IPV4地址表现形式采用的是点分十进制形式,那下一代的IPv6地址如何表达呢?由于IPv6地址长度4倍于IPv4地址,所以表达起来也要比IPV4地址复杂的多。IPv6地址的基本表达方式是X : X : X : X : X : X : X : X,其中X是一个4位十六进制整数( 1 6位)。每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计1 2 8位( 4×4×8 = 1 2 8 )。例如,下面是一些合法的IPv6地址:
CDCD :901A :2222 : 5498 : 8475 : 1111 : 3900 : 2020
1030 : 0 : 0 : 0 : C9B4 : FF12 : 48AA : 1A2B
2000 : 0 : 0 : 0 : 0 : 0 : 0 : 1
请注意这些整数是十六进制整数,其中A到F表示的是10到15。地址中的每个整数都必须表示出来,但起始的0可以不必表示。
这是一种比较标准的IPv6地址表达方式,此外还有另外两种更加清楚和易于使用的方式。
某些IPv6地址中可能包含一长串的0 (就像上面的第二和第三个例子一样)。当出现这种情况时,标准中允许用“空隙”来表示这一长串的0。换句话说,地址2000 : 0 : 0 : 0 : 0 : 0 : 0 : 1可以被表示为:2000::1。这两个冒号表示该地址可以扩展到一个完整的128位地址。在这种方法中,只有当1 6位组全部为0时才会被两个冒号取代,且两个冒号在地址中只能出现一次,以避免混淆。
在IPv4和IPv6的混合环境中还可能有第三种表达方法。IPv6地址中的最低32位可以用于IPv4地址的表示方法,该地址可以按照一种混合方式表达,即X : X : X : X : X : X : d . d . d . d,其中X表示一个16位整数,而d表示一个8位十进制整数。例如,地址
0:0:0:0:0:0:10.0.0.1就是一个合法的IPv4地址。把两种可能的表达方式组合在一起,该地址也可以表示为:::10.0.0.1。
IPv6地址和IPv4地址还有一个重大区别的地方,那就是地址类型。众所周知,目前的ip v4地址有三种类型:单播(unicast)地址,组播(multicast)地址,广播(broadcast)地址。而IPv6地址虽然也是三种类型,但是已经有所改变,有:单播(unicast),组播(multicast),任播(anycast)。
●单播地址:一个网络接口的地址。送往一个单播地址的包将被传送至该地址标识的接口
上。
●组播地址:一组接口(一般属于不同节点)的网络地址。送往一个组播地址的包将被传送至有该地址标识的所有接口上。
●泛播地址:一组接口(一般属于不同节点)的网络地址。送往一个泛播地址的包将被传送至该地址标识的接口之一(根据选路协议对于距离的计算方法选择“最近”的一个)。
●广播地址:一个网段内的所有节点。送往一个广播地址的包将被送至网段内的所有节点。
在IPv6地址中之所以要去掉广播地址,而重新定义任播地址,主要是考虑到网络中由于大量广播包的存在,容易造成网络的阻塞,而且由于网络中各节点都要对这些大部分与自己无关的广播包进行处理,对网络节点的性能也造成影响。
从以上资料可以看出,用一个字符串记录 IPv6 的地址,最长可能是 45 位。
即:X : X : X : X : X : X : d . d . d . d 模式
整理自以下资料:
http://news.onlinedown.net/info/11350.htm
http://www.ipv6.net.cn/
http://www.ipv6.net.cn/event/program.htm