计算机网络-从IPv4到IPv6的迁移

Aki 发布于 2023-07-06 229 次阅读


既然已经学习和了解了IPv6的技术细节,那么我们考虑一个非常现实的问题:基于IPv4的公共因特网如何迁移到IPv6呢?问题是,虽然新型IPv6使能系统可做成向后兼容IPv4,但是已经部署的具有IPv4能力的系统却不能够处理IPv6数据报。

在实践中已经得到广泛采用的IPv4到IPv6迁移的方法包括建隧道(tunneling)。

建立隧道的基本思想如下:假定两个IPv6节点(如图中的B和E)要使用IPv6数据报进行交互,但它们是经由中间IPv4路由器互联的。我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道。借助于隧道,在隧道发送端的IPv6节点(如B)可以将整个IPv6数据报放到一个IPv4数据报的数据(有效载荷字段)字段中。于是,该IPv4数据报的地址设为执行隧道接收端的IPv6节点(E点)(这里我有疑问,IPv4数据报地址项大小为4字节,IPv6数据报为16字节,怎么能这样弄呢?),在发送给隧道中的第一个节点(C点)。隧道中的中间IPv4路由器在它们之间为该数据报提供路由,就像对待其他数据报一样,完全不知道该IPv4数据报自身就含有一个完整的IPv6数据报。隧道接收端的Ipv6节点E最终收到该IPv4数据报(它是该IPv4数据报的目的地),并确定该IPv4数据报含有一个IPv6数据报(通过观察IPv4数据报中的协议号字段是41,指出该IPv4有效载荷是IPv6数据报),从中提取出IPv6数据报,然后在为该IPv6数据报提供路由,就好像它是从一个直接相连的IPv6邻居那里接收到该IPv6数据报一样。

我的疑问:为什么ipv4数据报中的目的地址可以设置为ipv6地址呢,这两个地址字节大小应该是不同的啊?

chatgpt的回答如下:

您提出了一个重要的观点。确实,IPv4地址和IPv6地址的字节大小是不同的。IPv4地址是32位(4字节),而IPv6地址是128位(16字节)。在建立隧道时,IPv4数据报的目的地址字段被设置为IPv6地址是一种简化描述方式,实际上是经过地址转换的过程。

在建立IPv6-over-IPv4隧道时,需要进行地址转换,将IPv6地址转换为IPv4地址。常用的地址转换技术之一是IPv6的地址封装(Address Encapsulation),它使用IPv4地址作为IPv6地址的表示。

具体来说,IPv6-over-IPv4隧道使用IPv4地址作为隧道的端点标识,但在隧道中传输的实际数据是IPv6数据报。发送端将IPv6数据报封装在IPv4数据报的有效载荷字段中,并设置IPv4数据报的目的地址为隧道的出口地址,这个地址可以是IPv4路由器的地址。

在隧道接收端,IPv4数据报被解封装,并从中提取出IPv6数据报。然后,IPv6数据报根据其自身的IPv6地址进行进一步的路由。

因此,当我们说将IPv6地址作为IPv4数据报的目的地址时,这是在描述地址转换过程,并不意味着直接在IPv4数据报中使用IPv6地址的二进制表示。

尽管采用IPv6最初表现为一个缓慢启动的过程,但势头已经有了。越来越多的国家和政府正在大力的推崇IPv6。我们能从IPv6的经验中学到的重要一课是,要改变网络层协议是及其困难的。自20世纪90年代早期以来,有许多新的网络层协议被鼓吹为因特网的下一次重大革命,但这些协议中的大多数至今为止只取得了有限突破。在网络层中引入新的协议的确如同替换一栋房子的基石,即在不拆掉整座房子的情况下是很难完成上述工作的。另一方面,因特网却已见证了在应用层中新协议的快速部署。典型的例子如web,及时通信,流媒体,分布式游戏等。引入新的应用层协议就像给房子重新刷一层油漆,这是相对容易完成的事情。总之,未来我们肯定会看到因特网网络层发生改变,但这种改变将比应用层慢得多。