IPv6 中的隧道:

IPv6 中的隧道:

6to4 隧道的概念是通过 ipv4 网络对 ipv6 数据包进行封装和解封装。封装过程如下:

[IPv6 header][Transport Header][Application Protocol data]

=> 封装:

[Ip4 Header][IPv6 header][Transport Header][Application Protocol data]

我从这个基础设施来讲:

主机 A(IPv6)-> 路由器 R1(双栈)-> IPv4 网络 -> 路由器 R2(双栈)-> 主机 B(IPv6)数据包。

封装中的 Ipv4 报头,这是主机 A、路由器 R1、路由器 R2 和主机 B 中的哪一个 Ipv4 报头?

提前致谢。

答案1

6to4 是普通的 IP over IP 隧道。无论谁进行隧道,都会发出数据包。由于您的主机 A 没有 IPv4 连接,因此它不能充当隧道端点。

举例来说,我有一个路由器(R1)Linux 盒,其 6to4 路由如下所示:

2000::/3 通过 ::192.88.99.1 dev sit0 度量 1024 mtu 1480 advmss 1420 hoplimit 0

以及 IPv4 路由:

默认通过 XXX.YYY.210.1 dev br0

来自 LAN(例如来自主机 A)的 Internet IPv6 流量路由到 sit0。LAN 上的盒子认为它们直接连接到 IPv6 互联网。来自 sit0 的流量被包装在以 R1 为源地址的 IPv4 数据包中,并注入连接到 IPv4 互联网的 br0。

答案2

两个路由器 R1 和 R2 将进行隧道传输。来自 R1 的数据包将具有 IPv4 报头,其中 R1 的 IPv4 地址作为源,R2 的 IPv4 地址作为目标(R1 发送到 R2)。返回的 IPv4 数据包将具有反转的源地址和目标地址(R2 发送到 R1)。主机 A 和 B 的 IPv6 地址将在封装数据包的报头中不经转换地传递。通常使用最小 20 字节的 IP4v 报头,因此隧道上的 IPv6 MTU(最大传输单元)最多为 1480 字节。

封装只是将 IPv4 报头添加到 IPv6 数据包并使用常规 IPv6 路由对其进行路由。解封装只是删除 IPv4 报头,并正常路由剩余的 IPv6 数据包。IPv6 数据包可以通过两个主机之间的多个隧道传递。IPv4 中的 IPv4 地址始终是隧道路由器(源)的地址和隧道端点路由器(目标)的地址。

编辑:以下内容是为了描述下一段中描述的情况。其他段落提供了额外的背景信息。

HostA (IPv6) 和 HostB (IPv4) 将无法通信,因为它们没有兼容的堆栈。如果 HostB 有 IPv6 堆栈,它们就可以通信。

双栈主机可以自行建立隧道,在这种情况下,其 IPv4 地址将用作 IPv4 端点地址。如果使用 NAT,则当数据包位于路由器之间的 IPv4 网络上时,其路由器的地址将是 IPv4 端点地址。

IPv6 没有 NAT,因此 IPv6 地址永远不会被转换。

要使仅支持 IPv6 的主机与 IPv4 主机通信,需要进行协议转换。主机 A 可以使用 IPv6 方案之一来寻址主机 B,该方案用于将 IPv4 地址编码为 IPv6。路由器 R1 需要执行协议转换。(虽然我不相信市场上有任何这样的路由器。)同样,IPv4 网络上的 IPv4 端点地址将是 R1 的 IPv4 地址。在协议转换期间,某些网络选项可能不会被转换。

相关内容