话说IPv4与IPv6之间的那点事(1)


对于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协议栈的系统上。


相关内容