考虑的操作系统:Windows Server 2008+
我们正在为复杂的客户端-服务器网络应用程序添加 IPv6 支持。服务器打开许多端口进行监听,不同类型的客户端连接到不同的端口。
我们正在考虑多种情况,包括:
- 服务器采用纯 IPv6,客户端采用纯 IPv6
- 服务器采用纯 IPv4,客户端采用纯 IPv4
- 服务器采用纯双栈,客户端采用纯 IPv6
- 服务器采用纯双栈,客户端采用纯 IPv4(隧道技术我们尚未弄清楚)
与服务器机器相关的问题是:是否可以安全地假设生产机器中Pure IPv6
仍将IPv4
在操作系统级别运行?换句话说,生产机器中是否Pure IPv6
仍将IPv4
在系统中运行环回地址?
关于IPv6
我发现这里这是操作系统的强制部分,至少没有办法禁用环回。但使用命令IPv6
是可能的。IPv4
netsh
我有两个担忧:
我的服务器应用程序是用 Java 编写的。如果我使用 在操作系统级别禁用 IPv4
netsh interface ipv4 uninstall
,则大多数 Java 网络 API 将停止工作,因为它们尚不支持此配置。 关联。在我的服务器应用中,监听的端口很少,因为它们必须从同一台机器访问。因此,如果我确保代码仅使用 而不是使用或
127.0.0.1
连接到这些套接字,我应该担心这些吗?127.0.0.1
localhost
::1
答案1
很少能对任何事情做出“安全”的假设。了解网络和您要部署到其中的软件。
禁用 IPv4 到卸载它的程度是非常罕见的。当这样做会完全破坏各种软件的网络堆栈,网络功能无法正常工作时,就会出现这种情况。
您仍然可以尝试使用仅 IPv6 寻址的软件来查看是否会出现任何问题。
对于环回监听器,请尝试在支持两者的编程环境中使用常量。对于 Java,这可能是InetAddress.getLoopbackAddress()