解释System.Net.IPAddress的实例属性

我在理解System.Net.IPAddress类时遇到了一些麻烦,因为我不知道在哪里查找某些属性引用的定义。 具体来说,是什么:

  IPAddress.IsIPv6LinkLocal IPAddress.IsIPv6Multicast IPAddress.IsIPv6SiteLocal IPAddress.IsIPv6Teredo 

我也很乐意接受一个解释这些概念的资源的答案。 MSDN网站certificate不足。

IPAddress.IsIPv6LinkLocal

链路本地地址是仅用于本地子网内通信的IP地址。 路由器不转发具有链路本地地址的数据包。

IPAddress.IsIPv6Multicast

多播地址是计算机网络中的一组主机的逻辑标识符,其可用于处理旨在针对指定网络服务进行多播的数据报或帧。 多播寻址可以用于链路层(OSI模型中的第2层),例如以太网多播,以及用于因特网协议第4版(IPv4)或第6版(IPv6)多播的因特网层(第3层,用于OSI)。

IPAddress.IsIPv6SiteLocal

唯一本地地址(ULA)是RFC 4193中定义的块fc00 :: / 7中的IPv6地址。它是IPv4专用地址的IPv6对应物。 唯一的本地地址可用于专用网络,例如在单个站点或组织内,或跨越有限数量的站点或组织。 它们不能在全球IPv6 Internet中路由。

IPAddress.IsIPv6Teredo

在计算机网络中,Teredo是一种过渡技术,可为具有IPv6function的主机提供完整的IPv6连接,这些主机位于IPv4 Internet上,但没有与IPv6网络的直接本机连接。 与其他类似协议相比,它的显着特点是即使从后面的网络地址转换(NAT)设备(如家用路由器)也能够执行其function。

CodeNaked的答案几乎是正确的,但请注意IPAddress.IsIPv6SiteLocal。 不推荐使用原始IPv6站点本地地址(fec0 :: / 10)。

这些天使用Unique Local Addresses(ULA)代替Site Local。 ULA有两种变体:fc00 :: / 8尚未定义,但可能在将来用于在中心位置(ULA Central)注册的内部使用地址。 fd00 :: / 8正在使用中,无需在任何地方注册。 此范围的前缀是随机生成的。

不幸的是,IsIPv6SiteLocal仅检查原始弃用版本:

 PS C:\Users\Administrator> [System.Net.IPAddress]'fec0::' Address : AddressFamily : InterNetworkV6 ScopeId : 0 IsIPv6Multicast : False IsIPv6LinkLocal : False IsIPv6SiteLocal : True IPAddressToString : fec0:: 

它不承认ULA中心:

 PS C:\Users\Administrator> [System.Net.IPAddress]'fc00::' Address : AddressFamily : InterNetworkV6 ScopeId : 0 IsIPv6Multicast : False IsIPv6LinkLocal : False IsIPv6SiteLocal : False IPAddressToString : fc00:: 

或在当地指定的ULA:

 PS C:\Users\Administrator> [System.Net.IPAddress]'fd00::' Address : AddressFamily : InterNetworkV6 ScopeId : 0 IsIPv6Multicast : False IsIPv6LinkLocal : False IsIPv6SiteLocal : False IPAddressToString : fd00:: 

有关详细信息,请参阅http://tools.ietf.org/search/rfc4193 。