在Windows 7中,如果没有Internet访问,通知区域网络图标将显示一个错误指示器,并且一旦成功连接到Internet ,该错误图标就会消失。有时,如果WiFi连接需要浏览器内的身份验证步骤(例如在酒店或大学中的许多访客网络上),则会出现以下弹出气泡,内容如下:


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


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


评论

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

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

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

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

#1 楼

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


NCSI尝试通过HTTP加载特定页面(更准确地说是文本文档),并测试是否可以检索该页面。如果操作失败,Windows将报告“没有Internet访问权限”。

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

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

源:http: //technet.microsoft.com/zh-CN/library/cc766017%28WS.10%29.aspx

评论


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

–戴夫·谢罗曼(Dave Sherohman)
2011年5月2日11:00

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

– Tobias Plutat
2011年5月2日,11:07

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

–nhinkle
2011年5月2日在16:51



它还表示如果您在代理后面,则无法访问Internet;)

–奥斯卡·梅德罗斯(Oscar Mederos)
2012年9月17日下午2:14

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

–krowe2
2015年4月10日19:13



#2 楼

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


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


dns.msftncsi.com的DNS名称解析请求
http://www.msftncsi.com/ncsi.txt的HTTP请求返回200 OK和文本Microsoft NCSI



可以禁用与注册表设置。如果将

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

设置为0,则Windows将不再探测Internet连接。

Apple在iOS中做了非常类似的操作来检测Internet。连接性以及可能的酒店“登录” wifi页面等。

评论


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

–TM。
2011年5月2日13:56



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

– Kortuk
2011年5月14日下午5:53

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

– Limzebedee
2011年5月18日在7:17

#3 楼

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



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

>

除了Jeff的回答,我还怀疑:


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


#4 楼

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


如果系统解析正确的地址,则该连接很清楚。 (Internet连接)
如果系统解决了dns请求但地址不正确,则存在重定向(可能需要添加其他登录信息)
如果系统没有解决dns请求是Internet连接问题(建立到网络/访问点的连接,但没有Internet连接)

我认为以下请求:


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


是一种快速触发方法,用于测试是否已清除与Internet的连接。之后,将运行dns请求以确定连接的完整状态。