1. Qu'est-ce que IPv6?
Vous pouvez rechercher ce problème sur Baidu ou Google, et vous obtiendrez beaucoup d'avantages. En fait, il s'agit principalement de résoudre le problème des adresses IPv4 insuffisantes. L'adresse V4 est de 32 bits, c'est-à-dire 192.168.1.1, tandis que l'adresse V6 est de 128 bits, ce qui est beaucoup plus grand que V4.
2. IPv6 a-t-il un masque de sous-réseau?
On peut dire qu'il y a, ou qu'il n'y a pas. C'est parce qu'il y a un préfixe dans IPv6. Il équivaut au masque de sous-réseau dans IPv4, mais les noms sont différents; On dit qu'il n'y a pas de non, ou que, car l'adresse de l'IPv6 est trop grande, et il est dit qu'il peut donner à chaque sable sur la terre une adresse, ce qui atténuera le concept de sous-réseau et n'en a plus besoin.
3. Adresse IPv6
La méthode d'écriture d'adresse IPv6 peut également être trouvée sur Internet, donc je ne la répertorierai pas en détail, généralement comme suit: 1205 :: FFFF0: FFD1: 1021/120, le dernier 120 représente le préfixe, ce qui équivaut au masque de sous-réseau dans IPV4.
4. Comment calculer l'adresse IP
La méthode de calcul de IPv6 et IPv4 est la même. Pour IPv4, par exemple, 192.168.1.1/255.255.255.0, alors son segment de réseau est calculé à partir de 192.168.1.0 ~ 192.168.1.255. Comment est-ce calculé? Selon les dispositions du FAI, son adresse de départ est: cette adresse IP et ce masque de sous-réseau sont obtenus par bit et opération; Son adresse finale est: cette adresse IP et ce masque de sous-réseau sont en bit ou en fonctionnement.
IPv6 est également le même en principe que IPv4. Parce que le préfixe IPv6 est trop long, il ne peut pas être exprimé sous la forme de 255.255.255.0, donc les nombres sont généralement écrits directement, tels que 120 ou 128, etc. 120 signifie que les 120 premiers bits de ce préfixe sont tous 1, et le suivant est 0. Ce préfixe est équivalent au masque de sous-réseau dans IPV4. Le calcul de l'adresse IPv6 est le même que IPv4.
Ce qui précède a expliqué la brève connaissance de l'IPv6, et nous traiterons le site Web IPv6.
L'URL de IPv6 doit être compatible avec la méthode de compression nulle, de sorte que l'URL de l'IPv6 doit être convertie. Ce qui suit est le code de conversion JS:
fonction transitip (iPaddr) // complète l'adresse IPv6 {var iPaddress = ipaddr.split ("/"); var iPaddrs = iPaddress [0] .split (":"); if (ipaddrs.length <8) {var count = 0; pour (var i = 0; i <ipaddrs.length; i ++) {if (ipaddrs [i] == "") {if (count == 1) {iPaddrs [i] = addzero (4); continuer; } 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] + = ":"; }} //// L'achèvement ci-dessus est terminé, le contenu est placé dans iPADDRS, mais ce n'est pas un retour standard initAddr (iPaddrs); // La chaîne complète de l'adresse IP est obtenue} fonction addzero (num) {var zerostr = ""; pour (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 (":"); // renvoie des iparrays; retourner iparray;}L'expression régulière du jugement de l'adresse IPv6 est:
Fonction ISIPV6 (str) // Jugement d'adresse 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]Ensuite, expliquons la conversion de IPv4 en IPv6:
La conversion d'IPv4 en URL IPv6 est très simple. Convertissez simplement l'adresse IPv4 au format hexadécimal, prenez deux segments en groupe, puis ajoutez :: ffff avant lui.
Le code JS est le suivant:
Fonction Four2Six (FourAddr, FourMask) // IPv4 à IPv6, y compris l'adresse et le masque {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 ("l'adresse IP est incorrecte!"); retour; } 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 ("Le masque de sous-réseau est incorrect!"); retour; }} else {var mask = parseInt (FourMask, 10); if (mask <0 || mask> 32) {alert ("Le masque de sous-réseau est incorrect!"); retour; }} / *** La méthode de conversion IPv4 en IPv6 est très simple 1. Convertissez d'abord chaque segment en hexadécimal 2. Ajoutez 0 avant moins de deux chiffres 3. V4 produira un total de 4 chiffres hexadécimaux, qui sont combinés avec les deux premiers et les deux derniers respectivement 4. "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: FFFF:" ** / var Sixtemp = ""; var quatreaddrs = quatreaddr.split ("."); pour (var i = 0; i <quatreaddrs.Length; i ++) {var addr4ip = paSeInt (FourAddrs [i], 10); var addRTemp = addr4ip.toString (16); if (addrTemp.length == 1) {addrTemp = "0" + addrTemp; } SixTemp + = AddrTemp; if (i == 1) {Sixtemp + = ":"; }} // Le segment d'adresse V6 généré ci-dessus est correct SixTemp = "0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000: FFFF:" + SixTemp; / *** Le masque de sous-réseau peut être traité ci-dessous. Il existe deux façons d'écrire des masques de sous-réseau, un numéro ou 255.255.255.0 1. La première méthode est relativement simple à traiter. Ajoutez simplement 96 (128-32) à cette valeur. 2. Le deuxième type doit être divisé en quatre segments, chaque segment est converti en binaire et voir quel bit devient 0 au début. ** / var maskTemp = 96; if (FourMask.Indexof (".") == - 1) {maskTemp + = paSeInt (FourMask); } else {var masques = quatre mask.split ("."); pour (var i = 0; i <masques.length; i ++) {var mask4ip = parseInt (masques [i], 10); var mask4Temp = mask4ip.toString (2); if (mask4Temp.length! = 8) {for (var j = 0; j <8-mask4Temp; j ++) {mask4Temp = "0" + mask4Temp; }} // Ce qui suit est une position var FlagTemp = false; pour (var j = 0; j <8; j ++) {if (mask4Temp.Charat (j) == '0') {FlagTemp = true; maskTemp + = i * 8 + j; casser; } if (j == 7 && i == 3) {FlagTemp = true; maskTemp = 128; casser; }} if (FlagTemp) {Break; }}} return SixTemp + "/" + maskTemp;} function Four2Sixip (FourAddr) // ipv4 à ipv6, uniquement pour adresse {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 ("l'adresse IP est incorrecte!"); retour; } var Sixtemp = ""; var quatreaddrs = quatreaddr.split ("."); pour (var i = 0; i <quatreaddrs.Length; i ++) {var addr4ip = paSeInt (FourAddrs [i], 10); var addRTemp = addr4ip.toString (16); if (addrTemp.length == 1) {addrTemp = "0" + addrTemp; } SixTemp + = AddrTemp; if (i == 1) {Sixtemp + = ":"; }} // Le segment d'adresse V6 ci-dessus est correct SixTemp = "0000: 0000: 0000: 0000: 0000: FFFF:" + Sixtemp; Retour Sixtemp;}Bien sûr, la méthode ci-dessus comprend un jugement régulier de l'adresse et du masque IPv4, et prend en charge deux types de masques sous forme de 255.255.255.0 et / 32.