ipv4与ipv6如何转换(xp怎么把ipv4改为ipv6) (ipv6和ipv4地址转换)
整理分享ipv4与ipv6如何转换(xp怎么把ipv4改为ipv6) (ipv6和ipv4地址转换),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:ipv6 转 ipv4,ipv6和ipv4地址转换,ipv4与ipv6如何转换,ipv4与ipv6如何转换,ipv4与ipv6转换,ipv4与ipv6如何转换,ipv4和ipv6转换,ipv4和ipv6转换,内容如对您有帮助,希望把内容链接给更多的朋友!
IPv6:是互联网工程任务组设计的用于替代现行版本IPv4的下一代IP协议;目前IP协议的版本号是IPv4,它的下一个版本就是IPv6.ipv4与ipv6*如何转换的python解决办法源码如下:(需要用到twisted.python*pat及struct和pythonsocket方法)importstruct,socket#importtwisted.python*pat#导入twisted.python*pat更方便#ipv4数字*defipv4_to_string(ipv4):ipv4_n=socket.htonl(ipv4)data=struct.pack('I',ipv4_n)ipv4_string=socket.inet_ntop(socket.AF_INET,data)returnipv4_stringdefipv4_from_string(ipv4_string):data=socket.inet_pton(socket.AF_INET,ipv4_string)ipv4_n=struct.unpack('I',data)ipv4=socket.ntohl(ipv4_n[0])returnipv4defipv4_readable2int(ipv4):returnint(ipv4)defipv4_int2readable(ipv4):returnstr(ipv4)#ipv6用四个整数(tuple或用,分开的字符串)表示defipv6_to_string(ipv6):ipv6_n=(socket.htonl(ipv6[0]),socket.htonl(ipv6[1]),socket.htonl(ipv6[2]),socket.htonl(ipv6[3]))data=struct.pack('IIII',ipv6_n[0],ipv6_n[1],ipv6_n[2],ipv6_n[3])ipv6_string=socket.inet_ntop(socket.AF_INET6,data)returnipv6_stringdefipv6_from_string(ipv6_string):data=socket.inet_pton(socket.AF_INET6,ipv6_string)ipv6_n=struct.unpack('IIII',data)ipv6=(socket.ntohl(ipv6_n[0]),socket.ntohl(ipv6_n[1]),socket.ntohl(ipv6_n[2]),socket.ntohl(ipv6_n[3]))returnipv6defipv6_tuple2readable(ipv6):returnstr(ipv6[0])+','+str(ipv6[1])+','+str(ipv6[2])+','+str(ipv6[3])defipv6_readable2tuple(ipv6):returntuple(ipv6.split(','))#win下实现inet_pton和inet_ntodefinet_ntop(family,ipstr):iffamily==socket.AF_INET:returnsocket.inet_ntoa(ipstr)eliffamily==socket.AF_INET6:v6addr=':'.join(('%X%X'%(ord(i),ord(j)))fori,jinzip(ipstr[::2],ipstr[1::2]))returnv6addr#*iplaypy*definet_pton(family,addr):iffamily==socket.AF_INET:returnsocket.inet_aton(addr)eliffamily==socket.AF_INET6:if'.'inaddr:#av4addrv4addr=addr[addr.rindex(':')+1:]v4addr=socket.inet_aton(v4addr)v4addr=map(lambdax:('%X'%ord(x)),v4addr)v4addr.insert(2,':')newaddr=addr[:addr.rindex(':')+1]+''.join(v4addr)returninet_pton(family,newaddr)dbyts=[0]*8#8groupsgrps=addr.split(':')fori,vinenumerate(grps):ifv:dbyts[i]=int(v,)else:forj,winenumerate(grps[::-1]):ifw:dbyts[7-j]=int(w,)else:breakbreakreturn''.join((chr(i//)+chr(i%))foriindbyts)else:raiseRuntimeError("Whatfamily?")IPv4的*如何转换为IPv6的*IPv4*是一个位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),通常我们以进制表示。例如..1.1就是一个进制的IPv4*,如果用2进制表示,则为这里设计的2进制与进制的计算方法比较简单,这里就不再阐述。那么由IPv4的*转换为IPv6的*怎么转换呢?这里有2种表示方法:第一种比较简单的。例如还是IPv4的..1.1转换成IPv6的*,则为::..1.1。就是在IPv4的*前添加::即可,不需要经过计算。第二种标准的IPv6*,需要经过计算。首先,需要将IPv4的*转换成2进制的,然后再由2进制的数,每4位为一组,转换成进制的,最后再转换为IPv6*。举例说明,..1.1,进制表示为..1.1,2进制表示为,进制表示为C0A,IPv6*为0:0:0:0:0:0:C0A8:.下表会更加清晰。二、xp怎么把ipv4改为ipv6XP下的配置方法与下配置方法基本相同。只是XP下必须先安装上IPV6协议,并且至少升级至SP1.配置过程如下:1、安装IPV6协议C:\>ipv6install2、查看端口信息首先使用ipv6if指令查看各接口状态,一般情况下,你会看到如下显示:Interface4(site1):本地连接……Interface3(site1):6-over-4VirtualInterface……Interface2(site0):TunnelPseudo-Interface……Interface1(site0):LoopbackPseudo-Interface……Interface4是本地的实际端口,其他三个都是虚拟端口,值得注意的是Interface2,它是Auto-Tunnel的端口,在接入配置中我们要用到。3、如果是在纯IPV6网络(或IPV6和IPV4双栈网络)中,你就可以自动获得IPV6*,可以访问IPV6网站了。你也可以设置固定的IPV6*,方法如下:C:\>netshnetsh>interfaceipv6netshinterfaceipv6>addaddress"本地连接"fe:a:::1/*设定固定的IPv6*,“本地连接”是指你的机上建立的某个连接的名称*/netshinterfaceipv6>adddns"本地连接"::e:0::2/*设定IPv6DNS**/4、如果你是在IPV4网络中,你需要与IPV6网络进行隧道连结。需要对端用户的配合来建立隧道,对端可以是网络中心的路由(交换)器,也可以是另一台PC机。无论如何,以下信息都是必须的:。你的可路由到对端的IPV4*,假定为...。对端的IPV4*,假定为...。对端的IPV6*,假定为::6C:::1。对端分配给你的IPV6*,假设为::6C:::2本端配置如下:配置隧道:ipv6ifcrv6v......为本机配置ipv6*:ipv6adu4/::6c:::2注:第4个Interface端口的*设为::6c:::2,这种配置的时候,一般指定为实际存在的Interface号,如果只有一块网卡的话,应该是4号Interface。*/为本机配置路由:ipv6rtu:://::6c:::1对端(服务端)如果是网络中心,请看路由器配置。如果对端也是PC机,根据*不同,按本站所列各*作*的配置方法配置。5、如果要用WindowsXP做路由器,则还需要打开其他接口的转发功能.例如,如果接口4是你的网卡,你所在的局域网就是挂在这块网卡下的,那么你还需要打开它的转发功能:ipv6ifc4forwards根据需要,你可能还愿意打开某些接口的路由广播功能6、测试:ping隧道对端*,能ping通即配置成功。ping::6c:::1