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


132

在Windows 7中,如果没有Internet访问,则通知区域网络图标将显示一个错误指示器无线网络,并且一旦成功连接到Internet,该错误图标就会消失网络正常。有时,如果WiFi连接需要浏览器内身份验证步骤(例如在酒店或大学中的许多访客网络上),则会显示以下弹出气泡,提示您: 可能需要其他登录信息,请单击以打开浏览器

Windows如何知道它是否具有成功的Internet连接?
大概是在检查一些联机Microsoft服务,以查看它是否具有成功的连接,是否重定向到其他页面或根本没有任何响应,但是我没有看到记录此过程或所用服务的任何地方。 。谁能解释这是如何工作的?我希望答案能参考事实,而不仅仅是猜测,但是如果您有一个很好的猜测,那就去做吧。

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


1
如果要检查Microsoft服务,它将如何通过浏览器内激活步骤?还是我误会你了?(+1顺便说一句,有趣的问题)
slhck

@slhck:这就是检查的重点:如果它无法正确访问该服务,但是其尝试得到了一些响应,则认为可能存在一个浏览器内步骤。如果没有反应,在所有,它假定有只是本地访问。我只是不确定该过程是如何工作的。我更新了我的问题,使它更加清楚了(希望如此)。
nhinkle

@nhinkle我没有Windows PC,但也许有人可以启动Wireshark来查看这种情况下计算机的实际功能。
slhck

当错误指示器显示无法访问互联网时,请打开网络故障排除程序。在疑难解答程序运行时,您可以清楚地看到“尝试连接到Microsoft.com”步骤。所以我的猜测是它使用了服务。
Mayank

Answers:


91

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

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

该机制还检查文档所在的域是否解析为预期的IP地址。因此,如果此测试成功,但是也无法检索到文档,则还可以假定可以正常访问Internet。

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

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


13
热点必须允许DNS,否则任何通过主机名(而不是IP地址)访问服务器的尝试都将失败,并显示“无法解析地址”类型的错误。根据热点的设置,它可能会将所有名称解析为其身份验证服务器的地址,也可能会正确解析名称,并且仅依赖于HTTP连接到身份验证服务器的重定向。喜欢的文档中描述的检查的DNS部分是为了验证dns.msftncsi.com解析为正确的地址,而不是根本解析为正确的地址。
Dave Sherohman 2011年

1
确实是正确的。我更新了答案以反映这一点。
Tobias Plutat

很棒的发现,并对其工作方式进行了很好的描述!如果没有更好的答案出现,那么您很快就会有一笔赏金。
nhinkle

它还说明No Internet access您是否在代理人后面;)
奥斯卡·梅德罗斯

1
我毫不怀疑这在大多数情况下是正确的,但这似乎是不完整的。有时,您会遇到DNS问题,并且连接图标会显示一个弹出窗口,表明您可以访问互联网,但DNS出现故障。我认为在步骤1之前(或者可能在步骤1之后)必须有一个步骤,即它尝试解析DNS。如果成功(但该页面未加载),则会显示DNS错误消息。
krowe2

69

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

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

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

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

可以使用注册表设置禁用它。如果您设定

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
     NlaSvc\Parameters\Internet\EnableActiveProbing

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

苹果在iOS中执行了非常类似的操作来检测互联网连接以及可能的酒店“登录” wifi页面等。


1
Android的更新版本(我认为是Gingerbread和更新版本...)也是如此...如果可以连接到网络,它们将以白色显示wifi图标,如果可以连接到某些由Google托管的设备,则将变为绿色。页。其背后的想法是相同的。
TM。

点燃也这样做,不知何故。当我连接到wifi时,它通知我我需要打开浏览器并接受使用条款。我想知道这也是怎么发生的。
Kortuk

3
因此,如果msftncsi.com出现故障,每台Windows 7计算机都将无法显示在线信号?那真是天才!
liamzebedee,2011年

8

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

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

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

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


3

对于需要其他登录信息的连接,很可能是通过Jeff提到的DNS解析步骤确定的,并发生以下三种情况:

  • 如果系统解析正确的地址,则说明连接已清除。(互联网连接)
  • 如果系统解决了dns请求,但地址不正确,则存在重定向(可能需要附加登录信息)
  • 如果系统无法解决dns请求,则说明存在Internet连接问题(建立了到网络/访问点的连接,但没有Internet连接)

我认为要求:

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

是一种快速的方法来测试与互联网的连接是否清晰。此后,将运行dns请求以确定连接的完整状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.