原文 Windows 怎么知道我已连线到网际网络? 原来当中大有文章!

标题这个问题好像很简单, 但原来深入研究起来还真的不是”因为我能看到网页嘛”这样简单的答案.

研究这个课题是由于公司内部的防火墙自动把一些连线封琐起来,

检视之下发现好些连线尝试连接到以下一条连结:

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

看到MSFT, 很直觉觉得事情跟微软有关系, 但是NCSI又是什么呢?

如果你到www.msftncsi.com想看看关于它的资料,你会得到这样一个画面

而直接看ncsi.txt的内容, 就比较明显了

真的是微软造的! 到Google追查之下才发现这个小文件的用途

NCSI, 全名是Network Connectivity Status Indicator, 是微软用来测试设备有没有连上网际网络和报告状况用的

这是由Vista年代开始引入的, 而且也提供有KB

大家如果有外游的话, 很多时候在酒店虽然插上网线得到IP了

但还是需要输入酒店提供的密码才能上网, 这时Windows又会懂得提示你, 原来也是靠NCSI才做到的!

旧版本的Windows没有这个功能, 可能你就在烦恼为什么Skype打不通了!

NCSI执行时的整个过程是这样的, 我还会以Wireshark辅助以提供更可靠的情报:

电脑原先处于无网络状态

1. 电脑启动, 或网线接上了, 假设Windows经过DHCP得到IP Address

2. Windows尝试向DNS查询一条A纪录www.msftncsi.com

3. 成功的话再查询dns.msftncsi.com

固定是得到131.107.255.255这个结果的, 如果Windows发现得不到这个结果, 或者结果不相同

就会觉得电脑没有正确得到网络连接, 或会显示不能接入网络的讯息.

4.假如以上步骤成功的话,会向http://www.msftncsi.com/ncsi.txt发出GET指令

如果成功得HTTP 200 OK的回应, 显示电脑正确连接到网际网络, 所以Windows 显示有网际网络连线

如果反解释dns.msftncsi.com成功但HTTP GET这个步骤并没有得到200 OK的结果

显然是有某些原因封所了这个HTTP连线, 很多时候就是需要多键入一个使用者密码

所以Windows会弹出一个讯息提示你可能需要提供更多资料才能进入网际网络!

但如果这不是问题所在, Windows就可能会告诉你连接进了受限制的网络了.

了解了这些, 我还是建议可以看看KB的描述

http://technet.microsoft.com/en-us/library/cc766017(WS.10).aspx

问题来了, 如果公司有些电脑根本就不会接触网际网络, 或防火墙并没有开放80埠我们应该怎么办?

另外, 在KB中微软在分页中声明了, 当我们发出DNS查询及HTTP GET时,

微软会把我们的IP和查询时间记录到IIS Log上, 这也引起了资安方面的问题.

基于以上问题, 微软建议我们在某些情况下自设一台WEB服务器,

再来把流向www.msftncsi.com的东西以修改机码的方式指向它, ncsi.txt文档建议拿微软的

因为有很多网上回报说它是一个特别的文档(没有EOL结尾), 如果自制的话很可能会失败.

而机码的位置在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

如果你想把这个功能停用, 可以直接把EnableActiveProbing从1改成0

注意任何改变机码的动作都可能对系统做成不能弥补的损害, 请备份后才修改!

参考连结:

http://technet.microsoft.com/en-us/library/cc766017(WS.10).aspx

http://blog.superuser.com/2011/05/16/windows-7-network-awareness/ Windows 7 Network Awareness: How Windows knows it has an internet connection

http://www.techrepublic.com/blog/data-center/what-do-microsoft-and-ncsi-have-in-common/ What do Microsoft and NCSI have in common?

Windows 怎么知道我已连线到网际网络? 原来当中大有文章!的更多相关文章

  1. ARCgis已知线裁剪已知面

    经常遇到需要在ArcGIS中,根据已知线图层(要素)切分已知面图层(要素).经过研究,利用topology拓扑菜单中的construct features可以实现.具体如下 现有用线图层A.面图层B, ...

  2. C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。

    一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...

  3. [转]在 Windows 操作系统中的已知安全标识符(Sid security identifiers)

    安全标识符 (SID) 是用于标识安全主体或安全组在 Windows 操作系统中的可变长度的唯一值.常用 Sid 的 Sid 标识普通用户的一组或通用组.跨所有操作系统,它们的值保持不变. 此信息可用 ...

  4. Win7程序运行出现Windows Based Scrip Host 已停止工作问题的解决方法

    最近在使用类似于Teamviewer这样的程序时,突然运行不了,报错:Microsoft Windows Based Scrip Host 已停止工作的问题,从系统日志来看,好像是空指针问题,但是又无 ...

  5. Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!

    Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! 转载 原文章地址:点击 2014-01-09 Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! ...

  6. Windows Server 2012 R2在桌面上显示计算机/网络图标

    原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...

  7. ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

    上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...

  8. Windows上的的神技能,你知道几个?(Windows技巧大全,已更新)

    不用借助任何第三方软件,其实Windows也大有可为——比你目前了解得至少要多得多,强大技能快来get起来! 1.文件隐藏谁的电脑里没点小秘密?东藏西藏到最后自己都找不到了有木有?今天教大家个隐藏文件 ...

  9. Windows Azure 自动伸缩已内置

     WindowsAzure平台提供的主要优点之一是能够在有需要时快速缩放云中的应用程序以响应波动.去年7月以前,您必须编写自定义脚本或使用其他工具(如Wasabi或MetricsHub)来启用自动 ...

随机推荐

  1. Screwturn搭建企业内部wiki

    企业内部WIKI搭建 本文所使用的是Screwturn 基于asp.net webform和Sql server的. 仅仅要把本文资源下载下来,直接用IIS部署,然后更改web.config的conn ...

  2. JS创建 trim() 方法,此方法在IE7、IE8中不存在 需要自定义

    function trim(str){ //创建空格对象 var space = new String(" "); /* str = trimLeft(str,space); st ...

  3. 使用VBA将批量的WORD文档转换为PDF

    Sub BatchConvertToPDF() Dim destFolderPath As String destFolderPath = GetFolderPath If destFolderPat ...

  4. jquery实现仿select列表的即时搜索及拼音搜索

    这里提到select,其实不是select,而是用<li><input>标签去仿造一个select,以实现对已有“option”的快速检索功能. 以<input>标 ...

  5. WebForm / MVC 源码分析

    ASP.NET WebForm / MVC 源码分析   浏览器 Url:https//localhost:6565/Home/Index ,https//localhost:6565/WebForm ...

  6. Follow your hear(跟着心走)

    端午三天的哈尔滨之旅已经over,非常开心真的非常开心.听了刘四风老师的"为爱开讲.我爱这世界"的论坛,尽管.这三天老师讲的不多.可是句句是精华.Follow your heart ...

  7. shell脚本中的数学运算

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法.以后用到的时候能够来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...

  8. Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)

    就在昨天,北京时间5月30日20点多.Spark 1.0.0最终公布了:Spark 1.0.0 released 依据官网描写叙述,Spark 1.0.0支持SQL编写:Spark SQL Progr ...

  9. iOS开展——全球应对MotionEvent

    遇到这样的要求:无论在哪个应用程序view controller,摇动手机,我们可以启动的方法. 你可以认为这个想法是使用包装的苹果"MotionEvent".但是,假如简单地把代 ...

  10. NServiceBus开发

    使用NServiceBus开发分布式应用 系列主题:基于消息的软件架构模型演变 NServiceBus 是一个.Net平台下开源的消息服务框架,这类产品有时也被称作ESB(Enterprise Ser ...