无线承载网络(Wireless Hosted Network)是Windows 7和安装有 WLAN 服务的Windows Server 2008 R2中一项新增的WLAN特性。该特性实现了以下两个主要功能:
这两个功能同时存在于 Windows 系统中。启用和禁用无线承载网络时也就同时启用和禁用了“虚拟WiFi”和“软AP”。无法在Windows中分别禁用或启用这两个功能。
通过此特性,Windows 计算机能通过一块物理无线网卡以客户端身份连接到(由物理设备提供的)硬AP,同时又能作为软AP,允许其它设备与自己连接。此特性需要计算机上安装有支持“承载网络”功能的无线网卡。无线网卡的驱动程序必须实现微软为 Windows 7 定义的“无线LAN设备驱动程序模型”。 无线网卡驱动程序必须支持“无线承载网络”特性,才能取得“Windows 7 徽标认证”。
一台计算机上只能开启一个无线承载网络,并且该无线承载网络只使用一块无线网卡。如果不止一块无线网卡支持承载网络特性,Windows将选择其中一块来提供无线承载网络。通过承载网络API,支持承载网络的无线网卡最多可以虚拟为 3 块逻辑网卡:
- 基站网卡(station adapter)(STA),供客户端或 ad hoc(临时)无线应用程序使用。 STA 网卡会继承物理网卡的所有设置,并表现出与物理网卡完全相同的行为。理论上,在虚拟化之后,我们可以认为STA网卡和物理网卡是完全相同的。只要其物理无线网卡存在, STA网卡就一直存在于系统中。
- AP网卡,被“无线承载网络”用来承载软AP。AP网卡只在首次调用无线承载网络(即首次调用WlanHostedNetworkStartUsing、 WlanHostedNetworkForceStart或 WlanHostedNetworkInitSettings 函数)之后才出现在Windows 中,直到无线承载网络被禁用后才会消失。如果再次启用无线承载网络,则 AP网卡会再次出现。
- 虚拟基站网卡(virtual station adapter)(VSTA),被硬件厂商用于扩展无线承载网络功能。VSTA是可选的,并且只能由相应的IHV(独立硬件制造商)服务来创建。与AP网卡不同的是,VSTA网卡在IHV服务将其初始化之后出现,并在IHV服务将其释放之后消失。
虚拟 WiFi 会将逻辑网卡映射到 NDIS 端口。Windows 将决定STA, AP 和 VSTA 网卡绑定到哪个NDIS端口。STA网卡只能被绑定到端口 0。AP网卡会被绑定到虚拟化启动之后下一个可用的 NDIS端口, 该绑定关系将一直保持不变,直到禁用无线承载网络,虚拟化结束为止。同样,VSTA会被绑定到IHV服务将其初始化后的下一个可用 NDIS端口,直到IHV服务将其释放,该绑定关系才会结束。
IHV可以创建VSTA网卡,而无需创建软AP网卡。
通过虚拟化技术,物理网卡可以虚拟出以下几种组合情形:
除 STA 网卡一种情况以外,其他所有组合都只能在启用无线承载网络之后才能生效。在无线承载网络禁用的情况下,STA网卡就是物理网卡。只要它已启用,在系统还未调用无线承载网络之前,它就是STA网卡。
在系统中,不允许在AP网卡和其他网卡之间建立二层桥接,这一限制对系统中的VSTA网卡同样适用。
Windows 中的无线承载网络特性实现了“软AP”,但它并不是用来替代基于硬件的无线AP设备的。特别是在运行无线承载网络时,如果计算机进入睡眠(待机)、睡眠状态,或进行了重启,无线承载网络将会停止,并且在唤醒或重启完成之后,并不会自动开启。另外,软AP不能提供DNS解析。如果不通过Internet连接共享(见下文)提供外部DNS服务器,在任何两台连接到该软AP的计算机或设备(包括承载该AP的计算机)之间的“完全限定的域名 (FQDN)”解析操作将只在它们双方都将软AP网络类型标记为“专用”(家庭或工作) 时才会正常工作。当承载软AP的计算机将该软AP网络标记为“专用”时,只需让连接到该软AP网络的计算机或设备将该软AP网络标记为“专用”, FQDN解析就可以进行了。
软AP和ad hoc网络在同一块物理网卡上是互斥的。当AP网卡上运行着软AP网络时,若有用户或应用程序在STA网卡上启动ad hoc网络,则软AP网络就会停止。当STA网卡上运行着ad hoc 网络时试图在AP网卡上启动软AP网络,则该操作会失败。
为了对承载软AP的计算机和与其连接的设备间的通讯提供安全保护,无线承载网络要求所有设备必须使用WPA2-PSK/AES加密机制。无线承载网络首次被调用(即首次调用WlanHostedNetworkStartUsing、 WlanHostedNetworkForceStart或WlanHostedNetworkInitSettings函数)时会生成一个 63字符的共享密钥。 用户和应用程序无法更改该共享密钥的值,但是应用程序可以调用WlanHostedNetworkRefreshSecuritySettings函数,请求操作系统生成一个新密钥,用户则可以使用netsh wlan 生成新密钥。该共享密钥被称作无线承载网络的“主密钥”或“系统密钥”,在无线承载网络从启动直到停止阶段的整个过程中保持不变。这个主密钥在netsh wlan 命令中叫做“系统安全密钥”。
为了便于使用,无线承载网络还支持“第二密钥”,也称作“用户安全密钥”,使用起来更加友好,但是安全性稍差。在netsh wlan命令中将其称作“用户安全密钥”。它并非由Windows 生成,而是由用户指定。应用程序可以调用WlanHostedNetworkSetSecondaryKey函数,用户则可以使用netsh wlan 命令来设置或更改其值。该密钥可以是永久性的,也可以是临时性的。在无线承载网络正在运行的情况下,临时密钥(第二密钥)将在无线承载网络停止之后失效;在无线承载网络未运行的情况下,它将在无线承载网络从下次启动到停止这段时间内有效。
在任何计算机中,无线承载网络都有且只有一个主密钥,一个第二密钥。所有使用 WiFi Protected Setup (WPS) 技术的设备都将接收到主密钥。其他手动配置的设备可以选择使用其中任意一个密钥。一旦某个密钥发生变更,使用该旧密钥的所有设备都必须在重新提供新密钥之后才能再连接到无线承载网络。不过,使用其他未变更密钥来连接的设备仍然可以连接到无线承载网络。
应用程序可以注册取得无线承载网络的通知,这样,当无线承载网络属性发生变化时,将会有WLAN通知发送给该应用程序的回调函数,方法是调用 WlanRegisterNotification,并且带上包含WLAN_NOTIFICATION_SOURCE_HNWK 数据值的dwNotifSource 参数。
Windows 为 IT 管理员提供了两种管理无线承载网络的方法。第一种是通过组策略对已经加入域的计算机禁用无线承载网络,第二种是使用netsh wlan 命令,在本地计算机上启用或禁用无线承载网络。
无线承载网络的应用场景
对于 Windows 计算机,无线承载网络主要有两个应用场景:
• 向其他无线设备提供无线个人区域网(wireless PAN)。
• 向其他计算机和设备提供网络连接共享。
无线个人区域网是无线承载网络本身的主要应用场景。计算机启动无线承载网络之后,任何支持WPA2-PSK/AES的无线设备都能像连接到硬件AP一样连接到软AP网络,它们相当于进入了一个无线个人区域网,能够与承载该软AP的Windows 计算机或其他已连接的设备交换信息。
要为其他计算机和设备提供网络连接共享,则需使用Internet 连接共享 (ICS)功能。在这个场景中,ICS的公共接口是提供共享的网络连接,专用接口是承载软AP的虚拟网卡。提供共享的网络连接可以是以太网、无线局域网或无线广域网。如果是无线局域网连接,则ICS的公共接口可以来自其他无线网卡,也可以是软AP所在物理网卡对应的基站虚拟网卡。最常见的共享类型是 Internet 连接,即ICS公共接口上的网络连接可以访问Internet。
无线承载网络可以和Windows 7 和 Windows Server 2008 R2 中的另一项新功能——WiFi Protected Setup (WPS) 进行交互。无线承载网络和 WPS 支持这样一种应用场景:设备支持 WPS,但AP硬件不支持WPS。在这种场景中,Windows 会在后台调用软AP,将AP硬件的网络配置推送到支持WPS的设备上。
用户和应用程序如何使用无线承载网络
最终用户可以使用第三方应用程序或 netsh命令与无线承载网络交互。Windows 7 和 Windows Server 2008 R2 目前还没有可配置或管理无线承载网络的用户界面。
第三方应用程序和 netsh 命令都是基于公开的无线承载网络函数来实现的。这一系列函数能对在Windows 7 和 Windows Server 2008 R2 上配置无线承载网络提供了完善的功能。
下方提供了无线承载网络的函数列表和用户最常用的一些操作命令:
netsh 命令供高级用户或管理员使用。
Netsh.exe 具有很多个与无线局域网(WLAN)相关的子命令。在命令提示符中键入以下命令可以获得 netsh 和WLAN的完整选项列表:
netsh wlan /?
Technet 网站上也提供了用于WLAN管理的Netsh 命令的详细联机文档。有关详细信息,请参阅 Netsh commands for Wireless Local Area Network (WLAN)(英文)。
以下是用于WLAN和无线承载网络管理的部分常用 netsh 命令,还有许多命令组合并未列出:
本文由 wbpluto 翻译自 MSDN Library,目的是让国内爱好者更多的了解相关技术。全文内容忠于原文,词汇遵照微软官方翻译,只有少数语句为了便于理解和阅读而做了语序上的调整。
本文转自wbpluto 51CTO博客,原文链接:http://blog.51cto.com/wbpluto/476711,如需转载请自行联系原作者