1。IPv6とは何ですか?
この問題をBaiduまたはGoogleで検索することで、多くの利点が得られます。実際、それは主にIPv4アドレスが不十分であるという問題を解決することです。 V4アドレスは32ビット、つまり192.168.1.1、V6アドレスは128ビットで、V4よりはるかに大きいです。
2。IPv6にはサブネットマスクがありますか?
存在する、または存在しないと言うことができます。 IPv6にプレフィックスがあるためです。 IPv4のサブネットマスクに相当しますが、名前は異なります。 IPv6のアドレスが大きすぎるため、ノー、または存在すると言われており、地球上の各砂に住所を与えることができると言われています。
3。IPv6アドレス
IPv6アドレス書き込み方法もインターネットで見つけることができるため、一般的に次のように詳細にリストされません:1205 :: FFFF0: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から計算されます。これはどのように計算されますか? ISPの規定によると、その開始アドレスは次のとおりです。このIPアドレスとサブネットマスクは、BITと操作によって取得されます。その最終アドレスは次のとおりです。このIPアドレスとサブネットマスクはビットまたは操作です。
IPv6は、原則としてIPv4と同じです。 IPv6プレフィックスは長すぎるため、255.255.255.0の形で表現できないため、通常は120や128などのように数値を直接記述します。120は、このプレフィックスの最初の120ビットがすべて0であることを意味します。 IPv6アドレスの計算はIPv4と同じです。
上記は、IPv6の簡単な知識を説明しており、IPv6 Webサイトを扱います。
IPv6のURLはゼロ圧縮法と互換性がある必要があるため、IPv6のURLを変換する必要があります。以下は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);続く; } 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に配置されますが、標準のリターンinitaddr(iPaddrs); for(var i = 1; i <num+1; i ++){zerostr+= "0"; if(i%4 == 0){zerostr+= ":"; }} return zerostr;}関数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( ":"); // iParraysを返します。 iparrayを返します;}IPv6アドレス判断の正規表現は次のとおりです。
関数isipv6(str)// ipv6アドレス判断{return /:/.test(str)&& str.match(/:/g).length <8 &&/::/。テスト(str)?(str.match(/::/g).length == 1 &&/^:: $ |^(::)?([/da-f] {1,4}(:| ::)次に、IPv4からIPv6への変換を説明しましょう。
IPv4のIPv6 URLへの変換は非常に簡単です。 IPv4アドレスを16進形式に変換し、2つのセグメントをグループに入れてから、その前に:: FFFFを追加します。
JSコードは次のとおりです。
function 42six(foraddr、fourmask)// IPv4からIPv6へ、アドレスとマスク{var reg = foraddr.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アドレスは正しくない!");戻る; } if(formask.indexof( "。")!= -1){reg = 4mask.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/。(255 | 254 | 252 | 248 | 240 | 224 | 192 | 128 | 0)/。 if(reg == null){alert( "subnetマスクは間違っている!");戻る; }} else {var mask = parseint(fourmask、10); if(mask <0 || mask> 32){alert( "subnetマスクは間違っています!");戻る; }} /*** IPv4をIPv6に変換する方法は非常に単純です1。最初に各セグメントを16進数に変換します。 "0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:ffff:" **/ var SiveTemp = ""; var fouraddrs = foraddr.split( "。"); for(var i = 0; i <fouraddrs.length; i ++){var addr4ip = parseint(foraddrs [i]、10); var addrtemp = addr4ip.toString(16); if(addrtemp.length == 1){addrtemp = "0" + addrtemp; } sinetemp += addrtemp; if(i == 1){sivetemp += ":"; }} //上記の生成されたv6アドレスセグメントは正しいsixtemp = "0000:0000:0000:0000:0000:0000:0000:0000:0000:0000:" + sixtemp; /***サブネットマスクは以下で処理できます。サブネットマスク、番号または255.255.255.0を記述する2つの方法があります。最初の方法は比較的簡単です。この値に96(128-32)を追加するだけです。 2。2番目のタイプは4つのセグメントに分割する必要があり、各セグメントはバイナリに変換され、最初に0になるビットが表示されます。 **/ var masktemp = 96; if(formask.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;壊す; } if(j == 7 && i == 3){flagtemp = true; masktemp = 128;壊す; }} if(flagtemp){break; }}}} sixtemp + "/" + masktemp;} function 42sixip(foraddr)// ipv4にipv6にreturn {var reg = foraddr.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アドレスは正しくない!");戻る; } var sine sivetemp = ""; var fouraddrs = foraddr.split( "。"); for(var i = 0; i <fouraddrs.length; i ++){var addr4ip = parseint(foraddrs [i]、10); var addrtemp = addr4ip.toString(16); if(addrtemp.length == 1){addrtemp = "0" + addrtemp; } sinetemp += addrtemp; if(i == 1){sivetemp += ":"; }} //上記のV6アドレスセグメントは正しいSiveTemp = "0000:0000:0000:0000:0000:ffff:" + sixtemp; sixtempを返します;}もちろん、上記の方法には、IPv4アドレスとマスクの定期的な判断が含まれており、255.255.255.0および /32の形で2種類のマスクをサポートしています。