Windows 有网络位置感知(NLA)的概念,这意味着您可以将网络配置为“公共”(即家庭/工作)、“私人”等。
为了这个目的,它使用什么信息来“指纹识别”网络?
答案1
答案2
来源:http://msdn.microsoft.com/en-us/library/ms740558%28VS.85%29.aspx
网络位置感知 (NLA)服务提供商对于可能在不同网络之间移动的计算机或设备以及在有多个可用配置时选择最佳配置至关重要。例如,在物理网络之间漫游的无线计算机可以使用 NLA 根据其可用网络连接的信息确定正确的配置。当多宿主计算机与一个网络有物理连接,同时通过拨号连接或隧道连接到另一个网络时,NLA 也非常有用。
过去,开发人员必须获取有关逻辑网络接口的信息,然后根据大量不同的网络信息做出有关网络连接的决策。在这种情况下,开发人员必须根据 IP 地址、接口的子网、与接口关联的域名系统 (DNS) 名称、NIC 的 MAC 地址、无线网络名称或其他网络信息选择适当的网络接口。NLA 通过提供标准接口来枚举逻辑网络附加信息、将其与物理网络接口信息关联,然后在先前返回的信息失效时提供通知,从而缓解了这个问题。
NLA 提供以下网络位置信息:
逻辑网络标识
NLA 首先尝试通过其 DNS 域名来识别逻辑网络。如果逻辑网络没有域名,NLA 会根据存储在注册表中的自定义静态信息来识别网络,最后根据其子网地址来识别网络。
逻辑网络接口
对于计算机所连接的每个网络,NLA 都会提供一个 AdapterName,用于唯一标识物理接口(例如 NIC)或逻辑接口(例如 RAS 连接)。然后,可以使用 IP Helper API 中的可用函数来使用该 AdapterName 以获取更多接口特性。
NLA 将逻辑网络实现为服务类,并具有关联的类 GUID 和属性。NLA 返回信息的每个逻辑网络都是该服务类的一个实例。
答案3
根据最近在非域、静态配置网络上进行的实验(使用 Server 2012,但我怀疑早期版本类似),NLA 服务使用默认网关的链路层(MAC)地址来识别网络。
细节尚不清楚,但我想可以用网络分析仪来解决。如果配置的默认网关没有响应,则 NLA 无法识别网络,因此它肯定在进行某种查询。(也就是说,您不能只输入虚拟网关地址,甚至不能输入虚拟网关地址加静态 arp 条目;与特定网络关联的网关 MAC 地址必须实际响应,以便 NLA 确定适配器已连接到该网络。)
也可以看看我的博客条目如何欺骗 Windows 2012 将适配器分配给唯一的网络。
如果适配器由 DHCP 分配地址,逻辑可能会有所不同。我还没有研究过这一点。域网络上的逻辑已根据现有答案记录下来。