摘要:通信工程师互联网技术考试双协议栈:双栈方式(Dualstack)是过渡阶段的一种主要的方式。双栈方式是指主机同时运行IPv4和IPv6两套协议栈,同时支持两个版本的网络层1P协议标准。
4.8.3.2 双协议栈
双栈方式(Dualstack)是过渡阶段的一种主要的方式。双栈方式是指主机同时运行IPv4和IPv6两套协议栈,同时支持两个版本的网络层1P协议标准。因为IPv4和IPv6在形式、功能等方面都较相似,IPv6不过是IPv4的改进、完善,二者同属于网络层协议,都基于相同的物理平台,而且加载于其上的传输层协议TCP和UDP也没有太大的区别(最多是针对IPv4的改进版本〉,所以在理论和实践上,支持双协议栈的节点既能与支持IPv4协议的节点通信.又能与支持IPv6协议的节点通信。主机和路由器都可以通过双栈方式来获得和IPv4及IPv6结点的通信能力。
双协议栈方式的实现可参见以下的概念模型,如图4-46所示。
如图4-46(8)所示,双协议节点(包括主机和路由器)同时实现了IPv4和IPv6协议,可以和IPv4或IPv6主机建立通信。主机根据目的IP来决定采用IPv4还是IPv6协议发送或接收数据包。在理想的网络分层模S中,传输层和网络层是独立的,IP层的改变并不会影响传输层协议的运行,但实际上,TCP和UDP协议在校验码计算中都采用包含了源和目的IP地址的伪头部?所以在LinUx、Window3等操作系统的IPv6协议实现中,作为IPv6上层协议的TCP/UDP代码是独立于IPv4上的TCP/UDP而实现的,如图4-46(b)所示,因此称之为双栈节点更合适。
目前双栈是运行最广泛的迁移机制。不过双栈只允许相同IP版本之间的通信,即IPv4和IPv4之间的通信,或IPv6和IPv6之间的通信。不同版本IP之间的通信需要通过协议翮译来完成。
在IPv4向IPv6的过渡初期?绝大多数终端或路由器都是纯IPv4节点(只实现了IPv4协议栈的节点)或双栈节点,在过渡中期,双栈节点或纯IPv6节点将是主要的通佶实体,到过渡后期,所有接人互联网的设备基本上都是纯IPv6节点(只实现了IPv6协议栈的节点〉。
双栈工作方式可以描述如下:
如果应用程序使用的目的地址是IPv4地址,则使用IPv4协议栈。
如果应用程序使用的目的地址是兼容IPv4地址的IPv6地址,则IPv6就封装到IPv4中。
如果目的地址是不为IPv4兼容的IPv6地址,则使用IPv6地址,且极可能通过隧道等技术来寻找路由和传送,或者封装在默认配置的隧道中。
如果应用程序使用域名来作为目的地址传送,那么节点首先必须提供一个能够处理IPv4A记录和IPv6AAAA或A6记录(IETF的IPng工作组提倡以IPv6A6记录来代替AAAA记录)的地址解析器数据库。启用程序必须访问具有上述解析能力的DNS服务器,从中得到相应的IPv4/IPv6地址,再根据所得地址的具体情况做出反应。
当DNS中同时存在A、AAAA和A6记录时,可能会有3种不同的操作:
只返回其中的IPv6地址;
只返回其中的IPv4地址;
同时返回IPv4和IPv6地址。
选择不同的地址类型及不同类型地址的返回次序都会对最终确定的某种类型的IP流量产生影响。
双协议栈的缺省IP包发送算法为:
①如果IP包的目的地址是IPv4地址:
如果目的站点在可达链路上,直接发送;如果目的站点不可达,要么送往在线路由器,要么不可达。
②如果IP包的目的地址是与IPv4兼容的IPv6地址:
如果目的站点在可达链路上,直接发送IPv6包;如果目的站点处于off-link,则有三种情况:(a)如果有可达IPv4路由器,则封装在IPv4包中发往IPv4路由器;(b)如果有可达IPv6路由器,则不封装,直接发送;(c)如果没有可达路由器,则不可达。
③如果IP包的目的地址是纯IPv6地址:
如果目的站点在可达链路上,直接发送IPv6包;如果目的站点处于off-link,则有三种情况:(a)如果有可达IPv6路由器,则直接发送到路由器;(b)如果目的地通过手动隧道可达,并且链路上有可达IPv4路由器,则封装成IPv4包,目的IP地址为隧道终点地址,链路地址为可达路由器的链路地址。(c)否则为不可达。
④在线/离线的确定:
IPv4使用子网掩码确定,IPv6使用邻居发现协议确定。两者共同使用的是:如果目的地址是IPv4地址,则使用RFC1122比较两者的掩码;如果目的地址是与IPv4兼容的IPv6地址,则使用低32位目的地址的子网掩码比较;如果是IPv6纯地址,则使用邻居发现协议比较。
这种协议栈方式的实现重点在于对网络路由器的升级改造。
对一个同时支持IPv4和IPv6的路由器来说,需要维护两种网络协议,也就是说,在一个路由器平台运行了两套类似的路由器软件,势必将增加系统运行的复杂性和系统维护的工作量。所以,在目前状况下,大多数IPv6实验并不刻意去实现两个完全不同的TCP/IP栈分别为IPv4和IPv6提供服务,而是努力探索只提供一个混合的协议栈,IPv4和IPv6两套协议栈中共享其中大部分代码;此外,两者本身只额外保留少量标示其特性的代码。于是,在某种意义上,这种模式已不算典型的“双栈”了。这样,就可以大大提高系统的效率。只是这方面还没有相关统一的协议规范。
另外,就双协议方式本身而言,并不保证具有创建隧道来进行数据传送的功能。只是一般来说,隧道技术往往要求具有双协议栈方式。两且,这种双协议栈方式在实践中的普遍运用,很多时候也需要隧道技术的支持。
编辑推荐
通信工程师备考资料免费领取
去领取