1、什么是IPV6?
这个问题可以去百度或Google找一下,应该会有很大的收获,其实主要就是为了解决IPV4地址不够用的问题,V4地址是32位,即:192.168.1.1,而V6地址则是128位,比V4扩大了太多倍。
2、IPV6有子网掩码吗?
可以说有,也可以说没有,说有呢,是因为在IPV6中有前缀的说法,它相当于IPV4中的子网掩码,只是名称不相同了;说没有呢,也可以,因为IPV6的地址实在是太大了,号称可以给地球上每个沙子一个地址,这样就淡化了子网的概念,不需要了。
3、IPV6的地址
IPV6地址写法在网上也可以查到很多很多,我就不详细列了,一般如下:1205::fff0:ffd1:1021/120,后面的120就是代表了前缀,相当于IPV4中的子网掩码。
4、IP地址的计算方式
IPV6和IPV4的网段计算方式一样,对于IPV4而言,如192.168.1.1/255.255.255.0,那么它的网段是从192.168.1.0~192.168.1.255,这个是怎么计算出来的呢"color: #ff0000">IPV6的网址写法上需要兼容零压缩法,因此需要对IPV6的网址进行转换,下面是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;
}
IPV6地址判断的正则表达式为:
function isIPv6(str)//IPV6地址判断
{
return /:/.test(str)
&&str.match(/:/g).length<8
&&/::/.test(str)
"color: #ff0000">接着我们说明下IPV4到IPV6的转换:
IPV4到IPV6网址的转换很简单,只需将IPV4地址转为十六进制格式,以两段为一组,然后再前面添加::ffff即可
JS代码如下:
function four2six(fouraddr,fourmask)//IPV4转IPV6,包括地址和掩码
{
var reg = fouraddr.match(/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/);
if(reg==null)
{
alert("IP地址不正确!");
return;
}
if(fourmask.indexOf(".")!=-1)
{
reg = fourmask.match(/^(254|252|248|240|224|192|128|0)\.0\.0\.0$|^(255\.(254|252|248|240|224|192|128|0)\.0\.0)$|^(255\.255\.(254|252|248|240|224|192|128|0)\.0)$|^(255\.255\.255\.(255|254|252|248|240|224|192|128|0))$/);
if(reg==null)
{
alert("子网掩码不正确!");
return;
}
}
else
{
var mask = parseInt(fourmask, 10);
if(mask<0 || mask > 32)
{
alert("子网掩码不正确!");
return;
}
}
/***
IPV4转IPV6的方法很简单
1、先将其每段转为16进制
2、不足两位的前面添加0
3、V4一共会产生4个16进制数字,比前两个和后两个分别组合
4、地址前面加上"0000:0000:0000:0000:0000:ffff:"即可
**/
var sixtemp = "";
var fouraddrs = fouraddr.split(".");
for (var i=0; i<fouraddrs.length; i++)
{
var addr4ip = parseInt(fouraddrs[i], 10);
var addrtemp = addr4ip.toString(16);
if(addrtemp.length==1)
{
addrtemp = "0" + addrtemp;
}
sixtemp += addrtemp;
if(i==1)
{
sixtemp += ":";
}
}
//以上产生V6地址段正确
sixtemp = "0000:0000:0000:0000:0000:ffff:" + sixtemp;
/***
下面处理子网掩码,子网掩码可以有两种写法,数字或者255.255.255.0写法
1、第一种处理比较简单,只需此数值加96(128-32)即可
2、第二种需要分为四段,每段转为2进制,看哪一位最开始变为0
**/
var masktemp = 96;
if(fourmask.indexOf(".")==-1)
{
masktemp += parseInt(fourmask);
}
else
{
var masks = fourmask.split(".");
for ( var i=0; i<masks.length; i++)
{
var mask4ip = parseInt(masks[i], 10);
var mask4temp = mask4ip.toString(2);
if(mask4temp.length!=8)
{
for(var j=0;j<8-mask4temp;j++)
{
mask4temp = "0"+mask4temp;
}
}
//下面判断位置
var flagtemp = false;
for(var j=0;j<8;j++)
{
if(mask4temp.charAt(j)=='0')
{
flagtemp = true;
masktemp += i*8 + j;
break;
}
if(j==7&&i==3)
{
flagtemp = true;
masktemp = 128;
break;
}
}
if(flagtemp)
{
break;
}
}
}
return sixtemp + "/" + masktemp;
}
function four2sixip(fouraddr)//IPV4转IPV6,只转地址
{
var reg = fouraddr.match(/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/);
if(reg==null)
{
alert("IP地址不正确!");
return;
}
var sixtemp = "";
var fouraddrs = fouraddr.split(".");
for (var i=0; i<fouraddrs.length; i++)
{
var addr4ip = parseInt(fouraddrs[i], 10);
var addrtemp = addr4ip.toString(16);
if(addrtemp.length==1)
{
addrtemp = "0" + addrtemp;
}
sixtemp += addrtemp;
if(i==1)
{
sixtemp += ":";
}
}
//以上产生V6地址段正确
sixtemp = "0000:0000:0000:0000:0000:ffff:" + sixtemp;
return sixtemp;
}
当然在上面的方法中包含了,对IPV4地址和掩码的正则判断,支持掩码以255.255.255.0的形式以及/32的形式两种。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“JavaScript获取IP获取的是IPV6 如何校验”评论...
更新日志
2025年10月27日
2025年10月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]