我正在进行API调用,该调用需要请求IP地址。
我正在使用ServletRequest.getRemoteAddr()获取请求的IP。
对于一个用户,getRemoteAddr()返回的是IPv6而不是IPv4,为什么?
据我了解,IPv6是IPv4的扩展,用户可以在其中选择使用IPv6
而不是IPv4。这是否意味着用户或用户的ISP正在使用IPv6?这是如何运作的....
还有没有办法使IPv4等效?
谢谢。
最佳答案
ipv6不是ipv4的“扩展”,它是一种替代的寻址方案。客户端使用的是ipv6还是ipv4地址,完全取决于客户端的配置(尽管客户端和服务器之间的中介必须兼容)。由于ipv6地址不向后兼容,因此无法将ipv4“等效”到ipv6地址(但是,在另一方面,也可以采用ipv6兼容的方式对ipv4地址进行编码)。
关于java - ServletRequest.getRemoteAddr什么时候返回IPv6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11399729/