1. Apa itu IPv6?
Anda dapat mencari masalah ini di Baidu atau Google, dan Anda akan mendapatkan banyak manfaat. Bahkan, terutama untuk menyelesaikan masalah alamat IPv4 yang tidak mencukupi. Alamat V4 adalah 32 bit, yaitu, 192.168.1.1, sedangkan alamat V6 128 bit, yang jauh lebih besar dari V4.
2. Apakah IPv6 memiliki topeng subnet?
Dapat dikatakan bahwa ada, atau tidak ada. Itu karena ada awalan di IPv6. Ini setara dengan subnet mask di IPv4, tetapi namanya berbeda; Dikatakan bahwa tidak ada, atau itu, karena alamat IPv6 terlalu besar, dan dikatakan bahwa itu dapat memberi setiap pasir di bumi alamat, yang akan memudar konsep subnet dan tidak lagi membutuhkannya.
3. Alamat IPv6
Metode penulisan alamat IPv6 juga dapat ditemukan di internet, jadi saya tidak akan mencantumkannya secara rinci, umumnya sebagai berikut: 1205 :: ffff0: ffd1: 1021/120, 120 terakhir mewakili awalan, yang setara dengan mask subnet di IPv4.
4. Cara menghitung alamat IP
Metode perhitungan IPv6 dan IPv4 adalah sama. Untuk IPv4, misalnya, 192.168.1.1/255.255.255.0, maka segmen jaringannya dihitung dari 192.168.1.0 ~ 192.168.1.255. Bagaimana ini dihitung? Menurut ketentuan ISP, alamat awalnya adalah: alamat IP dan subnet topeng ini diperoleh berdasarkan bit dan operasi; Alamat akhirnya adalah: Alamat IP dan subnet mask ini ada dalam bit atau operasi.
IPv6 juga sama pada prinsipnya dengan IPv4. Karena awalan IPv6 terlalu panjang, tidak dapat diekspresikan dalam bentuk 255.255.255.0, sehingga angka biasanya ditulis secara langsung, seperti 120 atau 128, dll. 120 berarti bahwa 120 bit pertama dari awalan ini semuanya 1, dan yang berikutnya adalah 0. Pejabat ini setara dengan subnet mask di IPv4. Perhitungan alamat IPv6 sama dengan IPv4.
Di atas telah menjelaskan pengetahuan singkat IPv6, dan kami akan berurusan dengan situs web IPv6.
URL IPv6 harus kompatibel dengan metode kompresi nol, sehingga URL IPv6 perlu dikonversi. Berikut ini adalah kode konversi JS:
function transitip (ipaddr) // lengkap alamat ipv6 {var ipaddress = ipaddr.split ("/"); var ipaddrs = ipaddress [0] .split (":"); if (ipaddrs.length <8) {var count = 0; untuk (var i = 0; i <ipaddrs.length; i ++) {if (ipaddrs [i] == "") {if (count == 1) {ipaddrs [i] = addZero (4); melanjutkan; } ipaddrs [i] = addZero ((9-ipaddrs.length)*4); Count ++; } else {ipaddrs [i] += ":"; }}} lain if (ipaddrs.length == 8) {for (var i = 0; i <8; i ++) {ipaddrs [i]+= ":"; }} //// Penyelesaian di atas selesai, konten ditempatkan di ipaddrs, tetapi bukan standar pengembalian initAddr (ipaddrs); // string lengkap alamat IP diperoleh} function addzero (num) {var zerostr = ""; untuk (var i = 1; i <num+1; i ++) {zerostr+= "0"; if (i%4 == 0) {ZeroStr+= ":"; }} return zeroStr;} function initaddr (ipaddrs) {var iparray = ""; untuk (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 (":"); // kembalikan iparrays; mengembalikan iparray;}Ekspresi reguler untuk penilaian alamat IPv6 adalah:
Fungsi ISIPV6 (str) // IPv6 Alamat Judgment {return /:/.test(str) && str.match (/:/g) .length <8 &&/::/. test (str)? (str.match (/::/g) .length == &&/^:: $ |^(::)? ([/da-f] {1,4} (: | ::))*[/da-f] {1,4} (::)? $/i.test (str)):/^([/da-f] {1,4}:) {7} [/da-f] {1,4Selanjutnya, mari kita jelaskan konversi dari IPv4 ke IPv6:
Konversi URL IPv4 ke IPv6 sangat sederhana. Konversi saja alamat IPv4 ke format heksadesimal, ambil dua segmen ke dalam grup, dan kemudian tambahkan :: ffff sebelumnya.
Kode JS adalah sebagai berikut:
Fungsi Four2Six (FourAddr, Fourmask) // IPv4 ke IPv6, termasuk alamat dan mask {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 ("Alamat IP salah!"); kembali; } 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/. (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 ("Subnet Mask salah!"); kembali; }} else {var mask = parseInt (fourmask, 10); if (mask <0 || mask> 32) {alert ("Subnet Mask salah!"); kembali; }} /*** Metode mengonversi IPv4 ke IPv6 sangat sederhana 1. Pertama mengubah setiap segmen menjadi heksadesimal 2. Tambahkan 0 sebelum kurang dari dua digit 3. V4 akan menghasilkan total 4 digit heksadesimal, yang dikombinasikan dengan dua yang pertama dan masing -masing dua. "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: ffff:" **/ var Sixtemp = ""; var fouraddrs = fouraddr.split ("."); untuk (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 += ":"; }} // Segmen alamat V6 yang dihasilkan di atas benar Sixtemp = "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: FFFF:" + Sixtemp; /*** Masker subnet dapat diproses di bawah ini. Ada dua cara untuk menulis topeng subnet, angka atau 255.255.255.0 1. Metode pertama relatif mudah diproses. Cukup tambahkan 96 (128-32) ke nilai ini. 2. Tipe kedua perlu dibagi menjadi empat segmen, setiap segmen dikonversi menjadi biner, dan lihat bit mana yang menjadi 0 di awal. **/ var masktemp = 96; if (fourmask.indexof (".") ==-1) {masktemp += parseInt (fourmask); } else {var masker = fourmask.split ("."); untuk (var i = 0; i <masker.length; i ++) {var mask4ip = parseInt (masker [i], 10); var mask4temp = mask4ip.tostring (2); if (mask4temp.length! = 8) {for (var j = 0; j <8-mask4temp; j ++) {mask4temp = "0"+mask4temp; }} // Berikut ini adalah posisi var flagTemp = false; untuk (var j = 0; j <8; j ++) {if (mask4temp.charat (j) == '0') {flagTemp = true; masktemp + = i*8 + j; merusak; } if (j == 7 && i == 3) {flagTemp = true; masktemp = 128; merusak; }} if (flagTemp) {break; }}} return sixtemp + "/" + masktemp;} function four2sixip (fouraddr) // ipv4 ke ipv6, hanya untuk mengatasi {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 ("Alamat IP salah!"); kembali; } var sixtemp = ""; var fouraddrs = fouraddr.split ("."); untuk (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 += ":"; }} // Segmen alamat V6 di atas benar Sixtemp = "0000: 0000: 0000: 0000: 0000: ffff:" + sixtemp; return sixtemp;}Tentu saja, metode di atas mencakup penilaian rutin alamat IPv4 dan topeng, dan mendukung dua jenis topeng dalam bentuk 255.255.255.0 dan /32.