1. IPv6 란 무엇입니까?
Baidu 또는 Google 에서이 문제를 검색 할 수 있으며 많은 혜택을 얻을 수 있습니다. 실제로, 그것은 주로 불충분 한 IPv4 주소의 문제를 해결하는 것입니다. V4 주소는 32 비트, 즉 192.168.1.1이며 V6 주소는 128 비트이며 V4보다 훨씬 큽니다.
2. IPv6에는 서브넷 마스크가 있습니까?
그것은 있거나 없다고 말할 수 있습니다. IPv6에 접두사가 있기 때문입니다. IPv4의 서브넷 마스크와 동일하지만 이름은 다릅니다. IPv6의 주소가 너무 커서 지구상의 각 모래에 주소를 줄 수 있다고 말하면 서브넷의 개념을 희미 해 더 이상 필요하지 않을 것이라고합니다.
3. IPv6 주소
IPv6 주소 작성 방법은 인터넷에서도 찾을 수 있으므로 일반적으로 다음과 같이 자세히 나열하지 않습니다.
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 등과 같이 직접 작성됩니다. IPv6 주소의 계산은 IPv4와 동일합니다.
위의 내용은 IPv6에 대한 간단한 지식을 설명했으며 IPv6 웹 사이트를 다룰 것입니다.
IPv6의 URL은 제로 압축 방법과 호환되어야하므로 IPv6의 URL을 변환해야합니다. 다음은 JS 변환 코드입니다.
함수 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); 카운트 ++; } else {iPaddrs [i] += ":"; }}} else if (iPaddrs.length == 8) {for (var i = 0; i <8; i ++) {iPaddrs [i]+= ":"; }} /// 위의 완료가 완료되고 내용은 iPaddrs에 배치되지만 표준 return initAddr (iPaddrs)은 아닙니다. // IP 주소의 전체 문자열이 얻어집니다} 함수 addzero (num) {var zerostr = ""; 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.match (/:/g) .length <8 &&/::/. test (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);}다음으로 IPv4에서 IPv6으로 변환을 설명해 봅시다.
IPv4를 IPv6 URL로 변환하는 것은 매우 간단합니다. IPv4 주소를 16 진 형식으로 변환하고 두 세그먼트를 그룹으로 가져간 다음 다음을 추가하십시오.
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 | 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 (fourmask.indexof ( ".")! = -1) {reg = Fourmask.match (/^(254 | 252 | 248 | 240 | 224 | 192 | 128 | 0)/. 0/.0/.0 $ |^(255/. 255/.255/. if (reg == null) {alert ( "서브넷 마스크가 잘못되었습니다!"); 반품; }} else {var mask = parseint (Fourmask, 10); if (mask <0 || mask> 32) {alert ( "서브넷 마스크가 잘못되었습니다!"); 반품; }} /*** IPv4를 IPv6으로 변환하는 방법은 매우 간단합니다. 첫째, 먼저 각 세그먼트는 16 진수 2로 변환합니다. 2 자리 미만의 3 숫자 3. v4는 총 4 개의 16 진수 숫자를 생성합니다. "0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 :"**/ 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 : 0000 : 0000 : 0000 : ffff :" + SixTemp; /*** 서브넷 마스크는 아래에서 처리 할 수 있습니다. 서브넷 마스크, 숫자 또는 255.255.255.0 1을 작성하는 두 가지 방법이 있습니다. 첫 번째 방법은 비교적 간단합니다. 이 값에 96 (128-32)을 추가하십시오. 2. 두 번째 유형은 4 개의 세그먼트로 나누어야하고 각 세그먼트는 이진으로 변환되며 처음에 비트가 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; 부서지다; } if (j == 7 && i == 3) {flagtemp = true; MaskTemp = 128; 부서지다; }} if (flagtemp) {break; }}} return sixTemp + "/" + maskTemp;} function four2sixip (fouraddr) // ipv4 to ipv6, {var reg = fouraddr.match (/^(/d {1,2} | 1/d/d | 2 [0-4]/d | 25 [0-5])/. (/d {1,2} | 1/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 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; SixTemp를 반환;}물론, 위의 방법에는 IPv4 주소 및 마스크의 정기적 인 판단이 포함되며 255.255.255.0 및 /32의 형태로 두 가지 유형의 마스크를 지원합니다.