【问题标题】:which dual stack server approach is better?哪种双栈服务器方法更好?
【发布时间】:2013-03-03 00:12:45
【问题描述】:

在应用程序中实现之前,我为双栈编写了两个服务器程序。

  1. 双栈服务器程序,可以接受具有单个 IPv6 接口的 IPv6 和 IPv4 客户端。但 IPv4 重新用作映射的 IPv6 地址。

  2. 具有两个接口的双栈服务器程序正在监听,以便分别处理 IPv6 和 IPv4 客户端,如用于 IPv6 客户端的 IPv6 接口和用于 IPv4 客户端的 IPv4 接口,其中不涉及用于 IPv4 客户端的 IPv4 映射地址向服务器请求。

两者都工作正常。但是因为我只需要使用一种服务器模型来构建我的服务器应用程序。那么,如果有任何其他更好的模型,哪一个更可取,甚至建议我。

IPv4 映射的 IPv6 地址 是否会在未来产生任何问题?

谁能帮帮我。 在此先感谢您的帮助。 (在 Linux 2.6.9 环境中工作并使用 C 进行网络编程。)

【问题讨论】:

  • 您是否需要针对无法使用 IPv6 代码构建的纯 IPv4 平台?
  • 没有。我们的内核同时支持 IPv4 和 IPv6。我们需要与 IPv4/IPv6 客户端通信,并且应用程序也需要支持独立平台。

标签: linux sockets network-programming ipv6 ipv4


【解决方案1】:

如果您可以使用 IPv6 完成所需的一切,那么我认为选项 1 会容易得多。你的代码会更干净,维护也会更容易。如果您依赖它,您可能希望在代码中将 IPV6_V6ONLY 标志显式设置为 0,以防系统管理员更改默认行为。

【讨论】:

  • 谢谢@Sander steffann。我的要求是双栈服务器,这是我在第一个模型中使用单个接口完成的。正如您所说,第一个模型易于维护。但是我在 Jun-ichiro itojun Hagino 的“IPv6 网络编程”一书中遇到了一篇关于 IPv4 映射地址问题的文章(谷歌书籍)。在第 4 章 4.3 节中,提到了使用 IPv4 映射的 IPv6 地址会影响安全性和可移植性的一些问题。那么,应用程序安全性是主要的,甚至需要额外的接口。?提前谢谢..
  • 谢谢@Sander steffan。但是,当我有一个 IPv4 独立客户端(如果未启用 IPv6 隧道)时,它尝试连接正在侦听 IPv6 接口的同一个 Model-I 服务器。?
  • 让套接字监听两个地址族与隧道无关。 IPv4 客户端可以通过普通 IPv4 进行配置。
【解决方案2】:

第二种方法是最便携的方法。例如,OpenBSD 不允许在 IPv6 套接字上使用传入的 IPv4 流量,无论 IPV6_ONLY 选项如何。

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 2020-11-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多