Windows 如何知道它是否可以访问 Internet 或 Wi-Fi 连接是否需要浏览器内身份验证?

nhi*_*kle 135 windows-7 wireless-networking

在 Windows 7 中,如果没有 Internet 访问,通知区域网络图标将显示错误指示符 wifi错误, 一旦成功连接到互联网,错误图标就会消失 网络正常. 有时,如果 WiFi 连接需要浏览器内的身份验证步骤,例如在酒店或大学的许多访客网络上,则会出现以下弹出气泡,说明如下: 可能需要额外的登录信息,点击打开浏览器

Windows 如何知道它是否具有成功的 Internet 连接?
大概它正在检查一些在线 Microsoft 服务以查看它是否有成功的连接、是否被重定向到其他页面,或者根本没有得到任何响应,但我没有看到任何地方记录了此过程或所使用的服务. 任何人都可以解释这是如何工作的吗?我更喜欢参考事实的答案,而不仅仅是猜测,但如果你有一个很好的猜测,那就去做吧。

这个问题是本周超级用户问题
阅读 2011 年 5 月 16 日的博客条目以了解更多详细信息或提交您自己的本周问题。

Tob*_*tat 92

经过一番挖掘(Windows 中与网络和 Internet 相关的服务的数量惊人),我想我找到了它。Windows Vista 和 7 具有多种网络感知功能,其中之一是网络连接状态指示器,它执行连接测试,而网络系统托盘图标会使用这些功能。互联网连接测试很简单:

  1. NCSI 尝试通过 HTTP 加载特定页面(更准确地说:文本文档)并测试它是否可以被检索。
  2. 如果不成功,Windows 将报告“无法访问 Internet”。

该机制还会检查托管文档的域是否解析为预期的 IP 地址。因此,如果此测试成功但无法检索文档,它也可能假设正确的 Internet 访问。

当您尚未在热点上进行身份验证时,它报告“无 Internet 访问”的原因在于热点的工作方式。它会阻止除 80 和 443(分别用于 HTTP 和 HTTPS)之外的所有端口,这些端口会被重定向到 Hotspot 的身份验证服务器,并且可能会以一种或另一种方式与 DNS 请求混淆。因此,NCSI 既无法解析其测试文件所在的域,即使它也无法访问实际文件,因为 HTTP 流量被重定向到身份验证服务器。

来源:http : //technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx

  • 热点必须允许 DNS,否则任何通过主机名(而不是 IP 地址)访问服务器的尝试都会失败,并出现“无法解析地址”类型的错误。根据热点的设置,它可以将所有名称解析为其身份验证服务器的地址,也可以正确解析名称并仅依赖 http(s) 连接重定向到身份验证服务器。喜欢的文档中描述的检查的 DNS 部分是为了验证 dns.msftncsi.com 是否解析为正确的地址,而不是它是否完全解析。 (14认同)
  • 这确实是正确的。我更新了答案以反映这一点。 (2认同)
  • 我不怀疑这大部分是正确的,但它似乎是不完整的。有时,您会遇到 DNS 问题,并且连接图标会显示一个弹出窗口,表明您可以访问互联网,但 DNS 出现故障。我认为在第 1 步之前(或可能在第 1 步之后)必须有一个步骤,即它尝试解析 DNS。如果成功(但页面未加载),则会收到 DNS 错误消息。 (2认同)

Jef*_*ood 71

以下是连接状态确定过程的详细信息:

以下列表描述了 NCSI 如何与网站通信以确定网络是否具有 Internet 连接:

  1. 请求 DNS 名称解析 dns.msftncsi.com

  2. http://www.msftncsi.com/ncsi.txt返回 200 OK 和文本的HTTP 请求Microsoft NCSI

这可以通过注册表设置禁用。如果你设置

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
     NlaSvc\Parameters\Internet\EnableActiveProbing
Run Code Online (Sandbox Code Playgroud)

0,Windows 将不再探测 Internet 连接。

Apple 在 iOS 中做了一些非常相似的事情来检测互联网连接和可能的酒店“登录”wifi 页面等。

  • 那么如果 http://www.msftncsi.com 宕机了,是不是每台 Windows 7 电脑都无法显示在线信号?那是天才! (3认同)

Mac*_*cke 8

正如杰夫所说,要检测 Internet 连接,Windows 将执行以下操作:

  1. 对服务器的 DNS 请求
  2. 已知内容的 HTTP 请求

除了杰夫的回答,我怀疑:

3 . 如果 HTTP 请求被重定向到 Microsoft 外部(或未返回预期内容),请在屏幕截图中显示消息。


Jam*_*rtz 5

对于需要额外登录信息的连接,更有可能通过 Jeff 提到的 DNS 解析步骤确定,发生以下三种情况:

  • 如果系统解析出正确的地址,则连接全部畅通。(互联网连接)
  • 如果系统解析了 dns 请求,但地址不正确,则会进行重定向(可能需要额外的登录信息)
  • 如果系统未解决 dns 请求,则存在 Internet 连接问题(已建立到网络/接入点的连接,但没有 Internet 连接)

我假设请求:

http://www.msftncsi.com/ncsi.txt

是一种快速测试互联网连接是否畅通的快速方法。之后,运行 dns 请求以确定连接的完整状态。