我在理解System.Net.IPAddress
class时遇到了一些麻烦,因为我不知道在哪里寻找某些属性所指的定义。具体来说,是:
IPAddress.IsIPv6LinkLocal
IPAddress.IsIPv6Multicast
IPAddress.IsIPv6SiteLocal
IPAddress.IsIPv6Teredo
我也很乐意接受一个解释这些概念的资源的答案。事实证明MSDN站点不足。
答案 0 :(得分:8)
链路本地地址是IP地址 这只是为了 当地的沟通 子网。路由器不转发 带有链路本地地址的数据包。
多播地址是合乎逻辑的 一组主机的标识符 计算机网络,可用 处理数据报或帧 打算多播一个 指定的网络服务。组播 寻址可以在链接中使用 层(OSI模型中的第2层),例如 作为以太网多播,并在 Internet层(OSI的第3层) Internet协议版本4(IPv4)或 版本6(IPv6)多播。
唯一的本地地址(ULA)是 块fc00 :: / 7中的IPv6地址, 在RFC 4193中定义。它是IPv6 IPv4私有的对应物 地址。唯一的本地地址是 可在私人网络中使用, 例如在一个网站内或 组织,或跨越有限的 网站或组织的数量。他们 在全球IPv6中不可路由 因特网。
在计算机网络中,Teredo是一个 充分发挥过渡技术 支持IPv6的IPv6连接 IPv4 Internet上的主机 但是没有直接原生的 连接到IPv6网络。 与其他类似协议相比 它的显着特点是它 能够甚至执行其功能 从网络地址后面 翻译(NAT)设备,如家庭 路由器。
答案 1 :(得分:4)
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 Central:
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。
答案 2 :(得分:0)
对于本地和本地站点链接:
http://www.tcpipguide.com/free/t_IPv6SpecialAddressesReservedPrivateLinkLocalSiteLo-3.htm
对于本地链接,本地站点和多播(以及其他站点):
http://technet.microsoft.com/en-us/library/cc757359(WS.10).aspx
对于teredo:
http://technet.microsoft.com/en-us/library/bb457011.aspx
HTH