我对IPv6的引入对我作为一个开发人员和我的遗留应用程序意味着什么感到困惑。
发布于 2012-10-02 09:12:50
request.getRemoteAddr()连接到服务器时,IPv6将为您提供IPv6地址。例如,如果客户端使用NAT64,那么在您看来,它们就像一个IPv4客户机,因此您将看不到IPv6地址。它看起来就像一个巨大的IPv4 NAT盒子在你的一边。- storage of addresses
- clients having multiple IPv6 addresses
- one client using both IPv4 and IPv6
- etc
有一个白纸突出了作为软件开发人员您将遇到的最重要的问题。
发布于 2016-12-29 19:13:16
我知道IPv4和IPv6本质上是不兼容的。IPv4客户端是否能够使用IPv6访问网站,IPv6客户端是否能够访问IPv4网站?
如果没有某种转换机制,只有ipv4的客户端将无法与ipv6 6专用服务器对话,反之亦然。
最初的想法是,整个世界将从“单堆栈ipv4”转向“双堆栈”。然后,一旦每个人都在双堆栈上,我们就可以开始关闭IPv4,转而使用“单堆栈ipv6”。
然而,这种情况并没有发生,网络运营商几乎没有看到部署IPv6和IANA的压力,而且大多数RIR已经耗尽了IPv4地址。因此,我们已经结束了大量IPv4的时代已经结束,但仍然有许多只有v4的客户端和服务器。
出现了各种过渡机制。包括:
它们中没有一个能解决所有的问题,有些问题是自己造成的,但它们可以组合使用,它们可以允许您运行一个仅使用V6的内部网络,只需要相对少数几个IPv4地址就可以与世界其他地区进行通信。
我检查我的Spring网站访问者的IP地址,比如this:....So远远的,这总是返回IPv4地址的格式a.b.c.d。如果使用IPv6的客户端连接到我的网站,这种情况会改变吗?或者,根据我的网站设置,各种隧道技术会使IPv6客户端伪装成IPv4客户端吗?
如果您的服务器直接接受ipv6连接,它显然会看到一个ipv6地址。
如果您的服务器通过使用套接字"::“(Linux默认启用此功能,windows需要一个特定的套接字选项来启用它)侦听ipv4和ipv6连接,那么ipv4地址将使用套接字作为"ipv4映射地址”传递给应用程序。您使用的库可能会对您隐瞒这一点,也可能不会对您隐瞒(我不熟悉spring的功能)。
如果您接受来自nat64或代理的连接,您显然会看到nat/proxy的地址。在代理的情况下,可以根据代理发送的信息确定客户端的实际IP地址。
当涉及到检索和处理IP地址时,我还可能面临其他IPv6问题吗?
将IPv4地址存储/传输为32位整数或具有较短长度限制的字符串的任何地方都可能需要重新工作。
我强烈建议你建立一个测试网络,开始尝试这些东西。
https://stackoverflow.com/questions/12686759
复制相似问题