4

我使用多种语言和几个平台开发应用程序。据我所知,IPv6 将在未来 5 到 10 年内成为主流,一些 ISP 甚至提供与 IPv6 互联网的直接连接。在我的专用网络上,所有机器都具有双栈连接,并尽可能使用 IPv6 相互通信。

我的问题是:我的新应用程序应该写成支持 IPv6 吗?如果是这样,我需要考虑哪些事情?现在支持 IPv6 有什么缺点吗?

我不知道这是否会有所帮助或伤害,但这里有一些更具体的细节可能会指导答案:

我的应用程序将在 Windows/Linux/Mac 上运行,它包含一个为每个平台单独编写的特定于平台的组件,以及一个用解释语言编写的通用“核心”组件。

我的应用程序应该能够定位在三个平台中的任何一个上运行的自身的其他实例,并支持任意两台机器之间的 TCP 和 UDP。

4

7 回答 7

9

是的:您所有的新应用程序都应该支持 IPv6。正如您自己所说,它已经在许多 LAN 环境中使用。

不:您不应该为了支持 IPv6 而做太多改变。底层框架应该为您处理差异。这假设您没有做“坏”的事情,例如存储或以其他方式操纵 IP 地址。

于 2009-08-07T20:55:31.860 回答
4

我看到这里有些人引用了史蒂夫·吉布森对这个问题的看法。尽管 Gibson 先生在安全事务方面非常熟练(我确实会听每一期“Security Now”的插曲,并鼓励所有对安全感兴趣的人也这样做),但我相信他与当前的计划有点脱节。他预测 IPv6 没有未来。

IPv6 的使用已经超出了单纯的学术用途,并且在国防研究行业中得到了相当多的关注,它不再是“是否”而是“何时”取代 IPv4 的问题(在军事网络中,是)。

当然,我们现在的互联网在很长一段时间内仍将使用 v4,原因之一是那里的大多数硬件和软件都不兼容 IPv6。

我想不出现在实现 IPv6 的任何缺点(当然,除了额外的编码时间和维护两个 IP 堆栈的额外复杂性)。事实上,有了 IPv6,事情就容易多了。例如,您可以忘记所有关于 NAT 穿越的问题。

于 2009-08-07T21:56:25.560 回答
3

安全研究员史蒂夫吉布森对此发表了惊人的言论,并指出它不会在不久的将来出现。以下是一些提供更多信息的链接:
http://www.grc.com/sn/sn-199.htm -- 在中途,他开始在成绩单/播客中谈论 IPv6。
http://www.grc.com/sn/sn-200.htm -- 快速更正第 199 集中的错误,并提供更多细节。

于 2009-08-07T21:14:29.997 回答
2

如果可能,您的框架应该同时支持两者,但如果您可以选择其中之一,我会选择 IPv4,但请确保您可以添加/转换到 IPv6。但这也取决于谁是产品的最终用户以及您的项目有什么要求。这是要使用/将使用 IPv6 的用户,还是要接受主要使用 IPv4 的现有基础。

根据我的经验,我目前正在工作的项目考虑使用 IPv6,因为必须能够支持 IPv6。在大多数情况下,我们发现硬件供应商(交换机、路由器、计算机)和 WAN 供应商能够支持切换到 IPv6。集成现有的 IPv4 硬件需要做一些工作,但可以做到。根据成本,至少在硬件方面是差不多的。

但是,我们正在使用的一些软件产品不支持 IPv6,也可能不会支持 IPv6,而其他软件产品似乎更易于支持 IPv6。基于此,我们正在升级到新版本的软件,但可能会暂时保持 IPv4,或者至少在软件赶上对 IPv6 的支持之前。

于 2009-08-07T22:35:32.063 回答
1

我至少会开始尝试。我已经对我的一些代码进行了一些调整。它还没有经过全面测试,还有更多的调整要做,但即使它永远不会在这些特定的应用程序中使用,我也将不得不在某个时候支持它。还不如在水槽或游泳情况之前立即学习。

于 2009-08-07T20:56:26.430 回答
0

我听到的最新消息是,有了 NPA……IPv6 的发展速度真的不会很快,如果有的话。(史蒂夫吉布森 - GRC)

这可能不值得你花时间。

编辑......显然这是我不应该接受的糟糕的远见。IPv6 即将到来并将被需要。IPv4 可能会一直存在,但应用程序应该能够在不久的将来同时处理这两种情况。

于 2009-08-07T20:53:05.983 回答
0

答案是肯定的。IPv6 渗透率现在接近 50%。

如果您打算为特定于平台的组件选择 Java 或 Go(这两个都是不错的选择,因为它们都可以在许多平台上工作),那么一种选择是使用开源IPAddress Java 库或 Go 库。您可以使用这些库编写适用于 IPv4 和 IPv6 的多态代码。在Java 存储库中,您会找到另一个链接“使您的 IPv4 应用程序与 IPv6 一起工作”,其中包含摘要。

免责声明:我是项目经理。

于 2022-02-28T22:30:34.170 回答