首页 > 代码库 > 在UNC(通用命名规范)路径和URL中使用IPv6地址
在UNC(通用命名规范)路径和URL中使用IPv6地址
转自:http://www.ipv6bbs.cn/thread-348-1-1.html
虽然微软在支持IPv6上表现得很积极,但Windows却并没有完整地支持IPv6,例如,在Windows中,我们以往可以使用UNC(通用命 名约定)访问网络共享文件夹(如\\127.0.0.1\C$),但现在却不能使用IPv6这样做,因为Windows看到IPv6地址中的冒号时,它会 把它当做驱动器盘符对待。
为了解决这个问题,微软为IPv6地址转换建立了一个特殊的域,如果你在UNC路径中使用IPv6地址,你必须使用破折号代替冒号,并在地址的末尾 加上.ipv6-literal.net后缀,例如FE80-AB00–200D-617B.ipv6-literal.net。
用于 UNC 路径的 IPv6 地址命名法
如果在 UNC 路径中指定一个文本 IPv6 地址,请按照以下步骤进行操作:
- 使用短划线“-”字符替换任何冒号“:”字符。
- 将文本“.ipv6-literal.net”追加到 IP 地址中。
例如,如果计算机的 IPv6 地址为 2001:DB8:2a:1005:230:48ff:fe73:989d,则指向该计算机上文件共享路径的 URI 的命名法为:
\\2001-DB8-2a-1005-230-48ff-fe73-989d.ipv6-literal.net\<sharename>
其中 <sharename> 是目标计算机上文件共享的名称。
注意:确保用于运行文件发送和接收处理程序的主机实例的用户帐户具有对该文件共享的相应权限。
对 HTTP 适配器等使用 IPv6 范围标识符
HTTP 发送和接收适配器以及 SOAP 发送适配器要求:如果 IPv6 地址中使用了范围标识符,则该范围标识符必须使用转义码 %25 进行转义。例如,fe80::550c:489f:e65e:aef3%8 是一个包含范围标识符 (%8) 的有效 IPv6 地址。若要将此 IPv6 地址用于 HTTP 发送和接收适配器或 SOAP 发送适配器,必须对该范围标识符进行转义,如下所示:
fe80::550c:489f:e65e:aef3%258
用于文本 IPv6 地址的适配器 URI 命名法
- 若要将文本 IPv6 地址用于适配器 URI,请将 IP 地址两边括上方括号“[”、“]”。例如,具有 IPv6 地址 2001:DB8:2a:1005:230:48ff:fe73:989d 的 URI 的命名法应为:
[2001:DB8:2a:1005:230:48ff:fe73:989d]
- 如果指定文本 IPv6 地址作为用于 POP3 接收适配器、SMTP 发送适配器或 SQL 发送和接收适配器的服务器名,则 IPv6 地址不应用方括号括起来。
在UNC(通用命名规范)路径和URL中使用IPv6地址
虽然通常应依赖于DNS名称,但是也可以在UNC路径或URL中略微进行转换即可嵌入IPv6地址。要想把一个IPv6地址用作UNC路径的一部分(例如\server\share),把冒号修改为连字符并附加.ipv6-literal.net即可。例如,要指定IPv6地址为 2001:db8::85b:3c51:f5ff:ffdb的计算机的C$共享,可以使用UNC路径:
\\2001-db8--85b-3c51-f5ff-ffdb.ipv6-literal.net\C$
。
要指定区域ID,把符号%替换为s。
在这种情况下,UNC路径中的IP地址2001:db8::85b:3c51:f5ff:ffdb%4将变为:
\\2001-db8--85b-3c51-f5ff-ffdbs4.ipv6-literal.net\C$
。
要想在运行着Windows 2000或Windows Server 2003的计算机上使用这种技术,可以按照Microsoft知识库文章281308(http://support.microsoft.com/kb/281308)中的步骤添加名称到服务器上。
把IPv6地址放在中括号中就可以在URL中嵌入它:例如http://[2001:db8::85b:3c51:f5ff:ffdb]/,中括号是必须的,这样就可以指定一个端口号作为URL的一部分。例如,URL http://[2001:db8::85b:3c51:f5ff:ffdb]:81/将会连接到同一个IPv6 IP地址的端口81上。
在UNC(通用命名规范)路径和URL中使用IPv6地址