与 IPv4 兼容的 IPv6 设备是否可能只有一个 IPv6 地址?
例如,当设备 A 与 IPv4 设备通信时,设备 A 使用其 IPv4 地址 2.2.2.4 进行通信。稍后,当设备 A 与 IPv6 设备通信时,它可以使用其 IPv6 地址 ::2.2.2.4 吗?
或者所有兼容 IPv4 的 IPv6 设备都必须有两个 IPv6 地址?
答案1
::2.2.2.4 不是有效地址。它曾用于自动隧道传输(参见旧RFC 3513)但现在已经不再使用了(它们在RFC 4291)。
还有另一种 IPv6 地址格式,称为 IPv4 映射的 IPv6 地址。它们看起来像 ::ffff:2.2.2.4,它们用于在 IPv4 兼容主机上运行的 IPv6 软件。例如:Linux 支持 IPv6 套接字上的 IPv4 连接。因此,如果服务器被编写为使用 IPv6,它仍然可以接受通过 IPv4 传入的连接。由于服务器软件需要 IPv6 地址,因此 IPv4 地址表示为 IPv4 映射的 IPv6 地址。但这并不意味着您正在与 IPv6 通信。这意味着 IPv6 兼容软件正在与 IPv4 通信。
回答您的问题:如果您想要进行双栈通信(同时使用 IPv4 和 IPv6),那么您至少需要两个地址:一个 IPv4 地址和一个 IPv6 地址。两者都需要在互联网上路由。互联网上当前使用的 IPv6 地址来自 2000::/3 前缀(从 2000: 到 3fff: 的所有内容),因此您需要这些地址。