【问题标题】:What's the percent sign after the address from IPAddress.ToString?IPAddress.ToString 地址后面的百分号是什么?
【发布时间】:2019-11-07 14:34:49
【问题描述】:

在代表 IPv6 地址的 IPAddress 实例上调用 ToString() 方法,我得到一些在地址后带有百分号的文本。这是not documented。什么意思?

返回值如下:fe80::1538:3f6c:a202:3af7%3

【问题讨论】:

    标签: c# .net networking


    【解决方案1】:

    你的是Scoped literal IPv6 address

    在维基百科页面中按 % 字符搜索:https://en.wikipedia.org/wiki/IPv6_address

    在此处粘贴相关段落:

    作用域文字 IPv6 地址

    对于非全局范围的地址(如下所述),以及 特别是对于链接本地地址,网络的选择 发送数据包的接口可能取决于地址所在的区域 属于:同一个地址可能在不同的区域有效,并且是 由每个区域中的不同主机使用。就算是单 地址未在不同区域中使用,地址前缀为 这些区域中的地址可能仍然相同,这使得 操作系统无法根据 路由表中的信息(基于前缀)。

    为了解决文本地址中的歧义,区域索引 必须附加到地址后,两者之间用百分号隔开 (%).[10]区域索引的语法依赖于实现 字符串,尽管数字区域索引必须被普遍支持为 好吧。链接本地地址

    fe80::1ff:fe23:4567:890a 可以表示为

    fe80::1ff:fe23:4567:890a%eth2 或:

    fe80::1ff:fe23:4567:890a%3

    【讨论】:

    • 谢谢!在这种情况下,不知道这实际上是地址的一部分。
    【解决方案2】:

    它表示一个非零的scope Id。实际范围 ID 如下。

    来源:Reference source

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多