本节内容作为IPv6相关知识的最后一节内容,同时也作为我们本专栏网络层知识的最后一节内容,主要介绍从IPv4地址到IPv6地址过渡的相关技术。在这里我们只学习各类考试中常考的三种技术。
IPv4向IPv6的过渡
在前面的知识中,我们学习到了两种IP地址,一种传统的IP地址(也就是我们常见的以点分十进制表示的IPv4地址),另一种是为了解决IPv4地址数量耗尽问题而开始部署的以冒分十六进制表示的IPv6地址。
根据前面的学习,我们了解到IPv6地址空间巨大,是IP地址发展演进的趋势。可同时,IPv4地址已经长期存在并成熟应用多年,网络上的各类计算机、路由器等设备都是以IPv4地址进行互联互通。互联网的网络规模如此庞大、如此复杂,要把所有网络设备的IP地址改用IPv6绝非易事,不可能在短时间全部替换成IPv6通信。因此,要采用一种IPv4向IPv6平滑过渡的方法,逐步推进,直至IPv6的大规模应用。
IPv4向IPv6平滑过渡的技术,主要包括三种,分别是:双协议栈技术、隧道技术、NAT-PT技术。下面我们就这三种展开学习。
双协议栈
协议栈的概念,我们之前虽没有提到过,但是我们在一开始学习了TCP/IP模型,之后通过学习数据链路层、网络层,知道每个层次都有自己的协议。例如PPP协议、CSMA/CD协议等都是数据链路层的协议,IP协议、ICMP协议、ARP协议等都是网络层的协议。这样按照TCP/IP层次的“协议排列”,就称为协议栈。“栈”是一种计算机数据结构,可以形象地表达出TCP/IP模型的协议组织形式,想深入了解的同学可以看看数据结构中对“栈”的介绍。
理解了协议栈的概念,那么双协议栈也就不难理解了。双协议栈也就是有两个协议栈,这两个协议栈同时装在同一个设备上,也就是这个设备同时具有IPv4和IPv6两种协议栈。
现在我们大部分的计算机的网卡上,几乎都有这两种协议栈。以windows 10系统为例,具体查看的方法是:打开控制面板,找到“网络和Internet”,点击“网络和共享中心”,进入界面后在左侧找到“更改适配器选项”,找到自己的网卡,右击选择“属性”,在这个界面中,可以看到如下信息:
这说明,我们的计算机网卡上同时装有IPv4和IPv6两种协议栈,可以同时在IPv4、IPv6两种网络上通信,在和IPv4网络的主机通信时采用IPv4地址,在和IPv6网络中的主机通信时采用IPv6地址。由此也可见,如果网卡本身没有安装TCP/IPv6协议栈的话,就使用不了IPv6地址,只能使用IPv4地址通信。另外,个人宽带想使用IPv6地址通信,要开通ipv6的外网带宽业务,还要在自己的光猫和路由器上做一些其它的设置,以开启IPv6网络访问的功能。
这时候又产生一个新的问题:双协议栈的主机如要访问一个网站,怎么才能知道该网站是否支持IPv6呢?一般情况下,能够支持IPv6访问的网站,都在自己的网站页面上标有“本站已支持IPv6”等字样。如要查询,最简单的方法,是通过一些第三方工具来测试,例如 boce 等在线网站的“IPv6测试”功能即可检测一个网站是否支持IPv6。
隧道技术
第二种过渡的方法是使用隧道技术,这种方法适用于IPv6“孤岛”的情况,也就是说,IPv4网络规模巨大,就像一片海洋,而其中有几个使用IPv6协议栈的主机就像海洋里面一个个小的“孤岛”一样。
比如有两台主机A和B,这两台主机都只有IPv6协议栈,两者之间可以直接用IPv6地址通信的,但关键的问题在于它们之间的网络是IPv4的网络。这样情况下,主机A发送的IPv6的数据包该如何跨越“IPv4的海洋”到达主机B呢?这就是隧道技术产生的问题背景。
“隧道”是一个虚拟的概念,就像日常生活中的火车如何穿越大山一样,要在大山里面挖出一条隧道。那么IPv6的数据包如何穿越IPv4的网络,也是这个道理。这种方法的原理是:当IPv6的数据包进入IPv4网络的时候,就加上IPv4的首部,封装成IPv4的数据包,离开IPv4网络的时候再把加上的首部去掉,还原回IPv6的数据包交给目的主机。这个过程就像是在IPv4网络中“挖出了一条隧道”可以让IPv6数据包“穿越过去”。原理图如下:
由此可见两个特点:第一,在隧道中传输的时候,整个IPv6的数据包都是作为外面一层IPv4数据包的数据部分存在的,也就是把IPv6数据包封装进了IPv4数据包里面。第二,虽然要通信的两台主机并不是双协议栈的主机,但是必须要求两台同时连接着IPv4和v6网络的边界路由器(如图中展示的两台路由器)具有双协议栈,因为这样才能够完成隧道中封装的整个工作。
另外一个问题是,双协议栈的路由器怎么能够知道IPv4数据包里面封装的数据是一个IPv6的数据包呢?这就要依靠IPv4数据包首部中的“协议”字段的值了,将“协议”字段的值设置为41,就表示其数据部分是一个IPv6的数据包。
NAT-PT
通过前面学习NAT技术,我们知道这是一种地址转换技术。在路由器上配置NAT,用于公网和私网IP地址之间的映射和转换。既然NAT技术具有这种地址转换的“翻译”功能,那么能否利用这个功能,用于IPv4和IPv6之间地址的“翻译”呢?这种技术就是NAT-PT。
NAT-PT全称“Network Address Translator - Protocol Translator”,即“带有协议转换器的网络地址翻译”,它的功能就是让IPv6的节点可以和IPv4的节点之间可以互通。
NAT-PT的原理和NAT类似,出口路由器上配置一个IPv4地址池,当IPv6的主机发出数据包,经过出口路由器,路由器根据预先配置好的信息,将数据包源地址转换成一个IPv4的地址。和NAT一样,NAT-PT也可以分为“一对一”的转换和“一对多”的转换。同理,一对多的转换被称为NAPT-PT。(如果不知道“一对多”的含义,请参看本专栏中第33节——NAT的内容)
另外需要指明的是,NAT-PT的主要功能是IPv6的节点发起向IPv4的节点的通信,但反过来,IPv4的节点要访问IPv6的节点则比较复杂。NAT-PT的路由器除了要具有IPv4地址池以外,还要有应用层网关的支持,否则不能实现IPv4节点对IPv6节点的访问。(应用层网关是一种防火墙,学习网络安全时会详细介绍)。
以上的内容,就是IPv4向IPv6地址过渡的三种技术,有关IPv6的内容就介绍完了,这也就意味着网络层的内容介绍完了。从下面一节开始,我们学习传输层的相关内容。
参考教材:谢希仁《计算机网络》第八版