【问题标题】:IPV6 validation issueIPV6 验证问题
【发布时间】:2013-12-09 02:15:27
【问题描述】:

我正在对服务器 (java) 和客户端 (javascript) 端进行 IPV6 验证,但我遇到以下 IP 不兼容的问题:

  1. 02001:0000:1234:0000:0000:C1C0:ABCD:0876
  2. 2001:0000:1234:0000:00001:C1C0:ABCD:0876

它们都有一个额外的零,对我来说看起来无效。

我的 javascript 验证(基于 http://www.intermapper.com/support/tools/IPV6-Validator.aspx)返回无效,但我的服务器端说它是有效 IP。

在服务器端,我正在检查 2 个选项:
1. java.net.InetAddress.getByName("");
2. com.google.common.net.InetAddresses.isInetAddress("");

你能建议吗?

谢谢!

【问题讨论】:

  • 为什么无效? 0x020010x2001 代表相同的值。
  • 正确。我只是认为这是错误的,因为我在几个 IPv6 在线验证器中检查了它。
  • 您对 RFC 所说的内容感兴趣吗?在您得到明确的答案之前,最好咨询一下您的用例,而不是接受法律条文。
  • 是的,我对 RFC 所说的很感兴趣。感谢您的帮助!
  • @KobiM - 在这种情况下,您应该阅读 RFC :-)。说真的,对于与互联网标准相关的事情,您应该准备好找到正确的 RFC 并仔细阅读……在提问之前。

标签: java javascript validation ipv6


【解决方案1】:

RFC 4291 描述 IPv6 地址的文本表示。

它指定每个字段都是“一到四个十六进制数字”(第 2.2 节)。这符合 IPv6 地址是 128 位二进制值 (RFC 3587) 的事实;因此任何额外的数字都会导致值超过 128 位,因此无效..

无论你使用什么工具说这些地址是有效的,它都是坏的。

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2012-08-28
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多