茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JavaScript獲取IP獲取的是IPV6 如何校驗(yàn)
    來(lái)源:易賢網(wǎng) 閱讀:1923 次 日期:2016-06-20 14:10:07
    溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript獲取IP獲取的是IPV6 如何校驗(yàn)”,方便廣大網(wǎng)友查閱!

    1、什么是IPV6?

    這個(gè)問(wèn)題可以去百度或Google找一下,應(yīng)該會(huì)有很大的收獲,其實(shí)主要就是為了解決IPV4地址不夠用的問(wèn)題,V4地址是32位,即:192.168.1.1,而V6地址則是128位,比V4擴(kuò)大了太多倍。

    2、IPV6有子網(wǎng)掩碼嗎?

    可以說(shuō)有,也可以說(shuō)沒(méi)有,說(shuō)有呢,是因?yàn)樵贗PV6中有前綴的說(shuō)法,它相當(dāng)于IPV4中的子網(wǎng)掩碼,只是名稱不相同了;說(shuō)沒(méi)有呢,也可以,因?yàn)镮PV6的地址實(shí)在是太大了,號(hào)稱可以給地球上每個(gè)沙子一個(gè)地址,這樣就淡化了子網(wǎng)的概念,不需要了。

    3、IPV6的地址

    IPV6地址寫法在網(wǎng)上也可以查到很多很多,我就不詳細(xì)列了,一般如下:1205::fff0:ffd1:1021/120,后面的120就是代表了前綴,相當(dāng)于IPV4中的子網(wǎng)掩碼。

    4、IP地址的計(jì)算方式

    IPV6和IPV4的網(wǎng)段計(jì)算方式一樣,對(duì)于IPV4而言,如192.168.1.1/255.255.255.0,那么它的網(wǎng)段是從192.168.1.0~192.168.1.255,這個(gè)是怎么計(jì)算出來(lái)的呢?根據(jù)ISP的規(guī)定,它的起始地址為:此IP地址和子網(wǎng)掩碼按位與運(yùn)算求得;它的終止地址為:此IP地址和子網(wǎng)掩碼的取反(不包含符號(hào)位)按位或運(yùn)算求得。

    IPV6也和IPV4在原理上是一樣的,因?yàn)镮PV6前綴太長(zhǎng)了,所以根本無(wú)法用255.255.255.0的形式表達(dá)出來(lái),因此通常直接寫數(shù)字,如120或128等。120代表此前綴的前120位都是1,后面的則是0,這個(gè)前綴就相當(dāng)于IPV4中的子網(wǎng)掩碼,計(jì)算IPV6地址和IPV4一樣。

    上面已經(jīng)將IPV6的簡(jiǎn)要知識(shí)說(shuō)明了一下,下面來(lái)處理下IPV6網(wǎng)址。

    IPV6的網(wǎng)址寫法上需要兼容零壓縮法,因此需要對(duì)IPV6的網(wǎng)址進(jìn)行轉(zhuǎn)換,下面是JS的轉(zhuǎn)換代碼:

    function transitIp(ipaddr)//將IPV6地址補(bǔ)全

    {

     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] += ":";

     }

     }

     ////上述補(bǔ)齊完成,將內(nèi)容放置于ipaddrs中,但不標(biāo)準(zhǔn)

     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地址判斷的正則表達(dá)式為:

    function isIPv6(str)//IPV6地址判斷 

     return /:/.test(str) 

     &&str.match(/:/g).length<8

     &&/::/.test(str)

     ?(str.match(/::/g).length==1

     &&/^::$|^(::)?([\da-f]{1,4}(:|::))*[\da-f]{1,4}(:|::)?$/i.test(str))

     :/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str);

    }

    接著我們說(shuō)明下IPV4到IPV6的轉(zhuǎn)換:

    IPV4到IPV6網(wǎng)址的轉(zhuǎn)換很簡(jiǎn)單,只需將IPV4地址轉(zhuǎn)為十六進(jìn)制格式,以兩段為一組,然后再前面添加::ffff即可

    JS代碼如下:

    function four2six(fouraddr,fourmask)//IPV4轉(zhuǎn)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("子網(wǎng)掩碼不正確!");

     return;

     }

     }

     else

     {

     var mask = parseInt(fourmask, 10);

     if(mask<0 || mask > 32)

     {

     alert("子網(wǎng)掩碼不正確!");

     return;

     }

     }

     /***

     IPV4轉(zhuǎn)IPV6的方法很簡(jiǎn)單

     1、先將其每段轉(zhuǎn)為16進(jìn)制

     2、不足兩位的前面添加0

     3、V4一共會(huì)產(chǎn)生4個(gè)16進(jìn)制數(shù)字,比前兩個(gè)和后兩個(gè)分別組合

     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 += ":";

     }

     }

     //以上產(chǎn)生V6地址段正確

     sixtemp = "0000:0000:0000:0000:0000:ffff:" + sixtemp;

     /***

     下面處理子網(wǎng)掩碼,子網(wǎng)掩碼可以有兩種寫法,數(shù)字或者255.255.255.0寫法

     1、第一種處理比較簡(jiǎn)單,只需此數(shù)值加96(128-32)即可

     2、第二種需要分為四段,每段轉(zhuǎn)為2進(jìn)制,看哪一位最開(kāi)始變?yōu)?

     **/

     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轉(zhuǎn)IPV6,只轉(zhuǎn)地址

    {

     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 += ":";

     }

     }

     //以上產(chǎn)生V6地址段正確

     sixtemp = "0000:0000:0000:0000:0000:ffff:" + sixtemp;

     return sixtemp;

    }

    當(dāng)然在上面的方法中包含了,對(duì)IPV4地址和掩碼的正則判斷,支持掩碼以255.255.255.0的形式以及/32的形式兩種。

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JavaScript獲取IP獲取的是IPV6 如何校驗(yàn)
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)