对于IPv4,IP地址的匮乏,网络安全的漏洞,带宽问题等等。那么现在IPv6的来临却正好解决了这些问题,但是对于普及来说,它却又有着相当大的问题。针对这个情况,我们就要做好IPv4与IPv6之间的通信问题了。
(1)Dual Stack Model ( RFC2893 )
在这种模型下,任意节点都是完全双栈的。这时不存在IPv4与IPv6之间的相互通信问题,但是这种机制要给每一个IPv6的站点分配一个IPv4地址。这种方法不能解决IPv4地址资源不足的问题,而且随着IPv6站点的增加会很难得到满足,因此这种方法只能用在早期的变迁过程。
(2)Limited Dual Stack Model ( RFC2893 )
在这种模型下,服务器和路由器仍然是双栈的,而非服务器的主机只需要支持IPv6。这种机制可以节省大量的IPv4地址,但是在纯IPv6和纯IPv4节点之间的通信将会出现问题,为了解决这种问题,必须与其它技术结合使用。
(3)SIIT ( Stateless IP/ ICMP Translation, RFC2765 )
SIIT定义了在IPv4与IPv6的分组报头之间进行翻译的方法,这种翻译是无状态的,因此对于每一个分组都要进行翻译。这种机制可以和其它的机制(如NAT-PT)结合,用于纯IPv6站点同纯 IPv4站点之间的通信,但是在采用网络层加密和数据完整性保护的环境下这种技术不可用。纯IPv6节点和纯IPv4节点通过一个SIIT转换器通信,IPv6节点看到的对方一个IPv4?mapped地址的主机,同时它自己则使用一个IPv4 translated的地址。如果IPv6主机发出的IP分组中的目的地址是一个IPv4?mapped地址,那么SIIT转换器就知道这个IP分组需要进行协议转换。
(4)NAT-PT (Network Address Translation - Protocol Translation, RFC2766 )
NAT-PT就是在做IPv4与IPv6地址转换(NAT)的同时在IPv4分组和IPv6分组之间进行报头和语义的翻译(PT)。适用于纯IPv4站点和纯IPv6站点之间的通信。对于一些内嵌地址信息的高层协议(如FTP),NAT-PT需要和应用层的网关协作来完成翻译。在NAT-PT的基础上利用端口信息,就可以实现NAPT-PT,这点同目前IPv4下的NAPT没有本质区别。
NAT-PT的原理和SIIT类似,其改进的地方是将传统的IPv4下的NAT应用于SIIT中的IPv4地址的选取当中。SIIT的一个***的缺点是需要比较大的IPv4地址池,以供IPv6应用动态分配。这个IPv4地址池很大程度上制约了SIIT 的应用。而NAT-PT采用传统的IPv4下的NAT技术来分配IPv4地址,这样就可以以很少的IPv4地址构成自己的IPv4地址分配池,可以给大量的需要进行地址转换的应用使用协议转换服务。
在实现方面,如果没有DNS-ALG的支持,只能实现由IPv6发起的与IPv4之间的通信,反之,包就会被丢弃。如果有DNS-ALG的支持,就可以实现双向的通信。有一些应用需要一定程度的地址稳定性,NAT-PT可以被配置成提供V6到特定V4地址的静态映射。
该机制适用于过渡的初始阶段,使得基于双协议栈的主机,能够运行IPv4应用程序与IPv6应用互相通信。这种技术允许不支持IPv6的应用程序透明地访问纯IPv6站点。该机制要求主机必须是双栈的,同时要在协议栈中插入三个特殊的扩展模块:域名解析器、地址映射器和翻译器,相当于在主机的协议栈中使用了NAT-PT。
(6)BIA ( Bump-In-the-API, Internet Draft )
这种技术同BIS类似,只是在API层而不是在协议栈的层次上进行分组的翻译,所以它的实现比BIS要简单一些,因为不需要对IP包头进行翻译。BIS与BIA的主要区别是:BIS用在没有IPv6协议栈的系统上,BIA用在有IPv6协议栈的系统上。#p#
当双栈主机上的IPv4应用与其它IPv6主机通信时,API翻译器检测到从IPv4应用发出的基于socket API的函数,就调用IPv6 socket API函数与IPv6主机通信。
(7)SOCKS64 ( Socks gateway, rfc3089 )
SOCKS64是原有SOCKS协议 ( RFC1928 )的扩展,相当于IP层的代理。这种机制不需要修改DNS或者做地址映射,可用于多种环境,但是需要采用SOCKS代理服务器,并在客户端安装支持SOCKS代理的软件,对于用户来讲不是透明的。该机制增加了两个新的功能部件,它们构成了网关机制。
除了上述7种通信方式,IPv4与IPv6还可以通过TRT、DSTM、ALG等方式进行通信。
如何选择IPv4与IPv6的过渡机制
从已有的过渡机制可以看出,目前所有的方案都是针对某一种问题而提出的。这些过渡机制都不是普遍适用的,每一种机制都适用于某种或几种特定的网络情况,而且常常需要和其它的技术组合使用。在实际应用时需要综合考虑各种实际情况来制定合适的过渡策略。对于某一类互连问题,设计者们可以找出新的方式,并随着网络技术和发展不断的改进和更新这种方式。
为选择一个合适的机制,首先需求要明确,明确应用的类型、范围和系统的类型,然后选择合适的转换机制进行设计和实施。IPv4向IPv6过渡时期,通常采用的组网原则:
◆在能直接建立IPv6链路的情况下,使用纯IPv6路由;
◆在不能使用IPv6链路的情况下,IPv6节点之间使用隧道技术;
◆双栈的IPv6/IPv4主机和纯IPv6或者纯IPv4 的主机通信不需要采用协议转换,而直接“自动”选择相应的通信协议(IPv4或者 IPv6)。
◆对于纯IPv6和纯IPv4主机之间的通信,则应该使用协议转换或者应用层网关(ALG)技术,设计的协议转换器或者ALG应该尽量保证在不修改原有应用的情况下就可以使用