繁体   English   中英

阻止System.Net.IPAddress类中的混合IPv6格式

[英]Blocking mixed IPv6 formatting in System.Net.IPAddress class

我在搜索答案,但找不到。 我正在使用这样的东西

            if (IPAddress.TryParse(val, out parsedOutput))
            {    
                // ip address
                parsedOk = true;
            }

我正在通过val传递如下所示的字符串: 0:0:0:0:0:0:1111:0

我正在解析::17.17.0.0

有什么办法可以得到这样的信息::1111:0而不是这个“混合的” ipv4 / ipv6值?

根据RFC 5952 (IPv6地址文本表示的建议),该表示实际上是正确的。 第5节中说:

诸如IPv4映射的IPv6地址,ISATAP [ RFC5214 ]和IPv4可转换地址[ ADDR-FORMAT ]之类的地址将IPv4地址嵌入到该地址的低32位中。 这些地址具有特殊的表示形式,可以混合使用十六进制和点十进制表示法。 十进制表示法只能用于地址的后32位。 对于这些地址,如果满足以下条件,则建议使用混合表示法:通过使用众所周知的前缀,可以将地址区分为仅从地址字段中将IPv4地址嵌入到低32位中。 在撰写本文时,此类前缀在[ RFC4291 ]和[ RFC2765 ]中定义。

您显示的IPv6地址是与IPv4兼容的IPv6地址。 现在已弃用它,但根据RFC 4291第2.5.5节 ,它仍然是具有嵌入式IPv4地址的IPv6地址。 因此,分析的输出是正确的,建议使用。

解决方案:这是您要解析的字符串。 IPv6地址必须在地址的第一部分中包含某些内容,因此,如果要在其中添加如下所示的内容: 2000:0:0:0:0:0:1111:0 ,它将正确解析该内容。 它与计算机理解IPv6地址的方式有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM