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 นี้และหน้ากากย่อยนี้ได้มาจากบิตและการดำเนินการ ที่อยู่สุดท้ายคือ: ที่อยู่ IP และหน้ากากซับเน็ตนี้อยู่ในบิตหรือการทำงาน
IPv6 ก็เหมือนกันในหลักการเช่นเดียวกับ IPv4 เนื่องจากคำนำหน้า IPv6 นั้นยาวเกินไปจึงไม่สามารถแสดงได้ในรูปแบบของ 255.255.255.0 ดังนั้นตัวเลขมักจะเขียนโดยตรงเช่น 120 หรือ 128 ฯลฯ 120 หมายความว่า 120 บิตแรกของคำนำหน้านี้ทั้งหมด 1 การคำนวณที่อยู่ IPv6 นั้นเหมือนกับ IPv4
ข้างต้นได้อธิบายถึงความรู้สั้น ๆ เกี่ยวกับ IPv6 และเราจะจัดการกับเว็บไซต์ IPv6
URL ของ IPv6 จะต้องเข้ากันได้กับวิธีการบีบอัดเป็นศูนย์ดังนั้น URL ของ IPv6 จะต้องได้รับการแปลง ต่อไปนี้คือรหัสการแปลง JS:
ฟังก์ชั่น Transitip (ipaddr) // ที่อยู่ IPv6 ที่สมบูรณ์ {var ipaddress = ipaddr.split ("/"); var ipaddrs = iPaddress [0] .split (":"); if (iPaddrs.length <8) {count var = 0; สำหรับ (var i = 0; i <ipaddrs.length; i ++) {ถ้า (ipaddrs [i] == "") {ถ้า (นับ == 1) {ipaddrs [i] = addzero (4); ดำเนินการต่อ; } iPaddrs [i] = addzero ((9-ipaddrs.length)*4); นับ ++; } else {iPaddrs [i] += ":"; }}} อื่นถ้า (ipaddrs.length == 8) {สำหรับ (var i = 0; i <8; i ++) {ipaddrs [i]+= ":"; }} //// ความสมบูรณ์ข้างต้นเสร็จสมบูรณ์เนื้อหาจะถูกวางไว้ใน iPaddrs แต่มันไม่ได้เป็นมาตรฐานการกลับมาเริ่มต้น (ipaddrs); // สตริงที่สมบูรณ์ของที่อยู่ IP ได้รับ} ฟังก์ชัน addzero (num) {var zeroStr = ""; สำหรับ (var i = 1; i <num+1; i ++) {ZerOSTR+= "0"; if (i%4 == 0) {ZerOSTR+= ":"; }} return ZerOSTR;} function initAddr (iPaddrs) {var iparray = ""; สำหรับ (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} (: | ::))*[/da-f] {1,4} (::)? $/i.test (str)):/^([/da-f] {1,4} :)ถัดไปขออธิบายการแปลงจาก IPv4 เป็น IPv6:
การแปลง URL IPv4 เป็น IPv6 นั้นง่ายมาก เพียงแปลงที่อยู่ IPv4 เป็นรูปแบบเลขฐานสิบหกให้ใช้สองส่วนเป็นกลุ่มแล้วเพิ่ม :: ffff ก่อนหน้านั้น
รหัส JS มีดังนี้:
ฟังก์ชั่น 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) {แจ้งเตือน ("ที่อยู่ IP ไม่ถูกต้อง!"); กลับ; } 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 ("mask ซับเน็ตไม่ถูกต้อง!"); กลับ; }} else {var mask = parseInt (Fourmask, 10); if (หน้ากาก <0 || หน้ากาก> 32) {แจ้งเตือน ("หน้ากากย่อยหน้ากากไม่ถูกต้อง!"); กลับ; }} /*** วิธีการแปลง IPv4 เป็น IPv6 นั้นง่ายมาก 1. แรกแปลงแต่ละเซ็กเมนต์เป็น hexadecimal 2 เพิ่ม 0 ก่อนที่น้อยกว่าสองหลัก 3. v4 จะผลิตตัวเลขหกสิบหกซึ่งรวมกับสองครั้งแรกและสองลำดับสุดท้าย 4 "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: FFFF:" **/ var sixtemp = ""; var fouraddrs = fouraddr.split ("."); สำหรับ (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: 0000: 0000: 0000: FFFF:" + SIXTEMP; /*** หน้ากากซับเน็ตสามารถประมวลผลได้ด้านล่าง มีสองวิธีในการเขียนมาสก์ซับเน็ตจำนวนหรือ 2555.255.255.0 1. วิธีแรกนั้นค่อนข้างง่ายในการประมวลผล เพียงเพิ่ม 96 (128-32) ในค่านี้ 2. ประเภทที่สองจะต้องแบ่งออกเป็นสี่ส่วนแต่ละส่วนจะถูกแปลงเป็นไบนารีและดูว่าบิตใดจะกลายเป็น 0 ในตอนต้น **/ var maskTemp = 96; if (fourmask.indexof (".") ==-1) {maskTemp += parseInt (fourmask); } else {var masks = fourmask.split ("."); สำหรับ (var i = 0; i <masks.length; i ++) {var mask4ip = parseint (หน้ากาก [i], 10); var mask4temp = mask4ip.toString (2); if (mask4temp.length! = 8) {สำหรับ (var j = 0; j <8-mask4temp; j ++) {mask4temp = "0"+mask4temp; }} // ต่อไปนี้เป็นตำแหน่ง var flagtemp = false; สำหรับ (var j = 0; j <8; j ++) {ถ้า (mask4temp.charat (j) == '0') {flagtemp = true; maskTemp + = i*8 + j; หยุดพัก; } if (j == 7 && i == 3) {flagtemp = true; maskTemp = 128; หยุดพัก; }} if (flagtemp) {break; }}} ส่งคืน sixtemp + "/" + masktemp;} ฟังก์ชั่น 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) {แจ้งเตือน ("ที่อยู่ IP ไม่ถูกต้อง!"); กลับ; } var sixtemp = ""; var fouraddrs = fouraddr.split ("."); สำหรับ (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; กลับ sixtemp;}แน่นอนวิธีการข้างต้นรวมถึงการตัดสินที่อยู่ IPv4 และหน้ากากเป็นประจำและรองรับหน้ากากสองประเภทในรูปแบบของ 2555.255.255.0 และ /32