来自IPAddress.ToString地址后的百分号是多少?

时间:2019-11-07 14:34:49

标签: c# .net networking

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

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

2 个答案:

答案 0 :(得分:1)

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

来源:Reference source

答案 1 :(得分:1)

您是Scoped literal IPv6 address

在Wikipedia页面中按%字符搜索: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