哪种双栈服务器方法更好?

时间:2013-03-14 15:01:50

标签: linux sockets network-programming ipv6 ipv4

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

  1. 双堆栈服务器程序,可以通过单个IPv6接口接受IPv6和IPv4客户端。但IPv4会将其作为映射的IPv6地址。

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

  3. 两者都运转良好。但是因为我只需要使用一个服务器模型来构建我的服务器应用程序。那么,如果还有其他更好的模型,哪一个更可取,甚至建议我。?

    IPv4映射的IPv6地址将来会产生任何问题。?

    任何人都可以帮助我。 在此先感谢您的帮助。 (在Linux 2.6.9环境和使用C的网络编程中工作。)

2 个答案:

答案 0 :(得分:2)

如果您可以使用IPv6完成所需的一切,那么我认为选项1更容易。您的代码将更清洁,维护将更容易。您可能希望在代码中明确将IPV6_V6ONLY标志设置为0,以防您在系统管理员更改默认行为时依赖此标志。

答案 1 :(得分:0)

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