sma*_*man 6 .net c# system.net ip-address ipv6
我在理解System.Net.IPAddress
课程时遇到了一些麻烦,因为我不知道在哪里寻找某些属性所指的定义.具体来说,是什么:
IPAddress.IsIPv6LinkLocal
IPAddress.IsIPv6Multicast
IPAddress.IsIPv6SiteLocal
IPAddress.IsIPv6Teredo
Run Code Online (Sandbox Code Playgroud)
我也很乐意接受一个解释这些概念的资源的答案.MSDN网站证明不足.
链路本地地址是仅用于本地子网内通信的IP地址.路由器不转发具有链路本地地址的数据包.
多播地址是计算机网络中的一组主机的逻辑标识符,其可用于处理旨在针对指定网络服务进行多播的数据报或帧.多播寻址可以用于链路层(OSI模型中的第2层),例如以太网多播,以及用于因特网协议第4版(IPv4)或第6版(IPv6)多播的因特网层(第3层,用于OSI).
唯一本地地址(ULA)是RFC 4193中定义的块fc00 ::/7中的IPv6地址.它是IPv4专用地址的IPv6对应物.唯一的本地地址可用于专用网络,例如在单个站点或组织内,或跨越有限数量的站点或组织.它们不能在全球IPv6 Internet中路由.
在计算机网络中,Teredo是一种过渡技术,可为支持IPv6的主机提供完整的IPv6连接,这些主机位于IPv4 Internet上,但没有与IPv6网络的直接本机连接.与其他类似协议相比,它的显着特点是即使从后面的网络地址转换(NAT)设备(如家用路由器)也能够执行其功能.
CodeNaked 的答案几乎是正确的,但请注意 IPAddress.IsIPv6SiteLocal。不推荐使用原始 IPv6 站点本地地址 (fec0::/10)。
如今,使用唯一本地地址 (ULA) 代替站点本地。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::
Run Code Online (Sandbox Code Playgroud)
它不识别 ULA Central:
PS C:\Users\Administrator> [System.Net.IPAddress]'fc00::'
Address :
AddressFamily : InterNetworkV6
ScopeId : 0
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IPAddressToString : fc00::
Run Code Online (Sandbox Code Playgroud)
或本地分配的 ULA:
PS C:\Users\Administrator> [System.Net.IPAddress]'fd00::'
Address :
AddressFamily : InterNetworkV6
ScopeId : 0
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IPAddressToString : fd00::
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅http://tools.ietf.org/search/rfc4193。
归档时间: |
|
查看次数: |
1333 次 |
最近记录: |