原文 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. 促销R语言应用性能

    1.       绩效评估 时间的确定 R测量时间是在最简单的方式提供是system.time性能. system.time(expr, gcFirst=TRUE) 这个函数会在不减少程序执行性能的情 ...

  2. hdu5338 (二进制,双指针)

    这种双循环的优化问题碰到过很多了.层出不穷. 但无非就是要利用前面循环时,所产生的信息,从而减少计算. 可以注意到log其实是不超过40的, 那么以这方面入手,时间复杂度就可以降为nlogn log= ...

  3. POJ 2738 Two Ends(记忆化)

    Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...

  4. Cocos2d-x3.0 lua捆绑C++分类

    我知道这个纪录Lua结合整个过程. 原文地址:http://blog.csdn.net/qqmcy/article/details/26099859 准备工作: 1.创一个一个Lua的2dxproje ...

  5. Arduino 数码管LED驱动 数组法

    上个样例讲到驱动LED数码管,採用一种最直接的方案,对每一个LED进行高低电平的控制,这种长处是每一个LED都是受控可检的,避免了因为短路造成的假象,但对于数字变化来说,写起来就很冗余,因此这次尝试用 ...

  6. iOS Crash获取闪回日志和上传server

    首先我们整理常常会闪退的异常哪些:数组越界.空引用.引用没有定义方法.内存空间不足等等. 怎样获取crash闪退日志 -- 工具查看 先看第一个问题怎样查看,我搜索的方法有下面几个: 第一个方法:XC ...

  7. BeagleBone Black 板第三课:Debian7.5系统安装和远程控制BBB板

    BBB板第三课:Debian7.5系统安装和远程控制BBB板 由于BBB板系统是Debian 7.4.据说使用Debian系统能够实现非常多BBB板的无缝连接.能够更好的学习和控制BBB板,所以就决定 ...

  8. BootStrap布局案例

    BootStrap布局 bootstrap 2.3版与3.0版的使用区别 http://www.weste.net/2013/8-20/93261.html 以一个博客系统的首页,来介绍如何布局 1, ...

  9. sql 与linq的转换

    1. left Join 原始sql select t.[MINTAccountIdentifier] from BSS_Tenant t left join BL_SAPCustomer s on ...

  10. POJ 2152 Fire

    算是我的第一个树形DP 的题: 题目意思:N个城市形成树状结构.现在建立一些消防站在某些城市:每个城市有两个树形cost(在这个城市建立消防站的花费),limit : 我们要是每个城镇都是安全的:就是 ...