@H_4040@1、什么是IPV6?
@H404_0@ 这个问题可以去百度或Google找一下,应该会有很大的收获,其实主要就是为了解决IPV4地址不够用的问题,V4地址是32位,即:192.168.1.1,而V6地址则是128位,比V4扩大了太多倍。
@H_4040@
2、IPV6有子网掩码吗?
@H404_0@ 可以说有,也可以说没有,说有呢,是因为在IPV6中有前缀的说法,它相当于IPV4中的子网掩码,只是名称不相同了;说没有呢,也可以,因为IPV6的地址实在是太大了,号称可以给地球上每个沙子一个地址,这样就淡化了子网的概念,不需要了。
@H_4040@
3、IPV6的地址
@H4040@ IPV6地址写法在网上也可以查到很多很多,我就不详细列了,一般如下:1205::fff0:ffd1:1021/120,后面的120就是代表了前缀,相当于IPV4中的子网掩码。
@H4040@
4、IP地址的计算方式
@H4040@ IPV6和IPV4的网段计算方式一样,对于IPV4而言,如192.168.1.1/255.255.255.0,那么它的网段是从192.168.1.0~192.168.1.255,这个是怎么计算出来的呢?根据ISP的规定,它的起始地址为:此IP地址和子网掩码按位与运算求得;它的终止地址为:此IP地址和子网掩码的取反(不包含符号位)按位或运算求得。
@H4040@ IPV6也和IPV4在原理上是一样的,因为IPV6前缀太长了,所以根本无法用255.255.255.0的形式表达出来,因此通常直接写数字,如120或128等。120代表此前缀的前120位都是1,后面的则是0,这个前缀就相当于IPV4中的子网掩码,计算IPV6地址和IPV4一样。
@H4040@
上面已经将IPV6的简要知识说明了一下,下面来处理下IPV6网址。
@H404_0@
IPV6的网址写法上需要兼容零压缩法,因此需要对IPV6的网址进行转换,下面是JS的转换代码:
<div class="jb51code">
<pre class="brush:js;">
function transitIp(ipaddr)//将IPV6地址补全
{
var ipaddress = ipaddr.split("/");
var ipaddrs = ipaddress[0].split(":");
if(ipaddrs.length<8)
{
var count = 0;
for(var i=0;i<ipaddrs.length;i++)
{
if(ipaddrs[i]=="")
{
if(count==1)
{
ipaddrs[i] = addZero(4);
continue;
}
ipaddrs[i] = addZero((9-ipaddrs.length)*4);
count++;
}
else
{
ipaddrs[i] += ":";
}
}
}
else if(ipaddrs.length==8)
{
for(var i=0;i<8;i++)
{
ipaddrs[i] += ":";
}
}
////上述补齐完成,将内容放置于ipaddrs中,但不标准
return initaddr(ipaddrs);//获得了ip地址的完整字符串
}
function addZero(num)
{
var zerostr = "";
for(var i=1;i<num+1;i++)
{
zerostr+="0";
if(i%4==0)
{
zerostr+=":";
}
}
return zerostr;
}
function initaddr(ipaddrs)
{
var iparray ="";
for(var i=0;i<ipaddrs.length;i++)
{
iparray+=ipaddrs[i];
}
if(iparray.charAt(iparray.length-1)==':')
{
iparray = iparray.substr(0,iparray.length-1);
}
//var iparrays = iparray.split(":");
//return iparrays;
return iparray;
}