Windows如何知道它是否具有成功的Internet连接?大概是在检查一些联机Microsoft服务,以查看它是否具有成功的连接,是否重定向到其他页面或根本没有任何响应,但是我没有看到记录此过程或所用服务的任何地方。谁能解释这是如何工作的?我希望答案能参考事实,而不仅仅是猜测,但如果您有一个很好的猜测,那就去做吧。
这个问题是本周超级用户问题。
阅读2011年5月16日的博客条目以了解更多详细信息,或提交自己的“本周问题”。
#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请求以确定连接的完整状态。
评论
如果要检查Microsoft服务,它将如何通过浏览器内激活步骤?还是我误会你了? (+1 btw,有趣的问题)@slhck:这就是检查的重点:如果它无法正确访问该服务,但是其尝试得到了一些响应,则认为可能存在浏览器内步骤。如果根本没有响应,则假定只有本地访问。我只是不确定该过程是如何工作的。我已经更新了我的问题,希望更加清楚。
@nhinkle我没有Windows PC,但也许有人可以启动Wireshark来查看这种情况下计算机的实际功能。
当错误指示器显示无法访问互联网时,请打开网络故障排除程序。在疑难解答程序运行时,您可以清楚地看到“尝试连接到Microsoft.com”步骤。所以我的猜测是它使用了服务。