[英]IPv6: Why changing ScopeId of System.Net.IPAddress is not reflected at ToString() representation?
[英]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.