我正在阅读System.Net.IPAddress
的文档,感到困惑。
文档们一直在谈论一个叫做scopeId
的东西,它是一个64位整数:
IPAddress.ScopeId Property
获取或设置IPv6地址范围标识符。
ArgumentOutOfRangeException
[如果]scopeId < 0
-或-scopeId > 0x00000000FFFFFFFF
如果地址的长度为4,则
IPAddress(Byte[])
构造一个IPv4地址;否则,将构造范围为0
的IPv6地址。
public IPAddress (byte[] address, long scopeid)
使用指定为IPAddress
数组的地址和指定的作用域标识符初始化Byte
类的新实例。
我正在阅读Wikipedia上的IPv6 address § Address scopes文章,但无法调和:
除未指定的地址(
::
)之外,每个IPv6地址都有一个“作用域”,该作用域指定了它在网络的哪个部分有效。对于多播地址,第二个地址八位字节(
ff0s::
)的四个最低有效位标识地址范围,即应在其中传播多播数据包的域。
根据Wikipedia,作用域是地址本身的部分,而根据C#文档,作用域似乎是与地址本身成整数 eparate 且不可能从该地址派生(如果仅提供地址字节,则将范围设置为0
)。根据Wikipedia的介绍,作用域为四位值,而C#允许的值最高为0x00000000FFFFFFFF
!
这是怎么回事?似乎C#文档所讨论的范围与Wikipedia所讨论的范围有所不同。
这是什么“范围”?