|
虽然IPv6已经被公认为是下一代互联网络的核心通信协议,但由于IPv4已经经过20多年的发展和完善,几乎所有的计算机和路由器正在使用IPv4协议,要在很短的时间内把它们全部转换成为IPv6协议是不切实际的。IPv6协议的设计者认识到从IPv4过渡到IPv6可能会花费数年的时间,所以在相当长的时间内IPv6和IPv4网络将会需要进行通信和共存。要提供平稳的过渡,对现有的用户和应用软件影响最小,就需要有良好的转换机制。为此IPv6的设计者们在“IP下一代协议的建议”(RFC 1752)中定义了下列过渡标准:
|
|
|
(1)现存的IPv4主机必须可以随时升级到IPv6,它本身的升级与其他主机和路由器的升级无关。
|
|
|
(2)新使用IPv6协议的主机,可以随时加入IPv6网络,不依赖于其他主机和路由器。
|
|
|
(3)现存的IPv4主机,安装IPv6协议后,可以继续使用其IPv4的地址,而不需要其他地址。
|
|
|
(4)将现有的IPv4节点升级到IPv6,或部署新的IPv6节点只需要很少的准备工作。
|
|
|
基于这种标准,IPv4和IPv6可以长期共存,尽管现在IPv4是“海洋”,IPv6是“小岛”,但随着时间的推移,IPv6研究的进展,会有越来越多的节点加入到IPv6,那时IPv6就变成“海洋”,而IPv4成了“小岛”,最终实现全部迁移到IPv6网络。
|
|
|
|
|
双栈机制是处理过渡问题最简单的方式,通过在一台设备上同时运行IPv4和IPv6协议栈使得设备能够处理两种类型的协议。主机根据目的IP地址来决定采用IPv4还是IPv6协议发送或接收数据包。在过渡的初始阶段,所有支持IPv6的主机将同时具有IPv4协议栈。他们能够使用IPv4分组直接和IPv4节点通信,使用IPv6分组直接和IPv6节点通信。双协议栈并不一定要和隧道技术一起使用,但创建隧道一定要有双栈技术的支持。双栈结构如下图所示。
|
|
|
|
|
|
(1)如果应用程序使用的目的地址是IPv4地址,则使用IPv4协议。
|
|
|
(2)如果应用程序使用的目的地址是IPv6中的IPv4兼容地址,则同样使用IPv4协议,但此时IPv6封装在IPv4中。
|
|
|
(3)如果应用程序使用的目的地址是一个非IPv4兼容的IPv6地址,则使用IPv6协议,而且很可能此时要采用隧道等机制来进行路由转发。
|
|
|
(4)如果应用程序使用域名,则首先解析域名得到IP地址,然后根据地址情况按上面的分类进行相应的处理。
|
|
|
|
随着IPv6的发展,出现了一些被运行IPv4协议的骨干网络所隔离开的局部IPv6网络,为了实现这些IPv6网络之间的通信,必须采用隧道技术。隧道技术提供了一种以现有IPv4路由体系来传递IPv6数据的方法,在两者都具备双栈的节点间,将IPv6分组作为无结构意义的数据,封装在IPv4分组中,IPv4数据报头的“协议”字段设置为41,指示这个分组的净荷是一个IPv6分组,IPv4数据报文的源地址和目的地址分别对应隧道入口和出口的IPv4地址,到了隧道的出口处,再将IPv6报文取出转发给目的站点。封装结构如下图所示。
|
|
|
|
|
|
网络地址协议转换(Network Address Translation-Protocol,NAT-PT)网关能够实现IPv4和IPv6协议栈的互相转换,包括网络层协议、传输层协议以及一些应用层协议之间的互相转换,原有的各种协议可以不加改动就能与新的协议互通,但该技术在应用上有一些限制:
|
|
|
(1)在拓扑结构上要求一次会话中双向数据包的转换都在同一个路由器上完成,因此地址/协议转换方法较适用于只有一个路由器出口的网络;
|
|
|
(2)一些协议字段在转换时不能完全保持原有的含义。
|
|
|