Windows 怎么知道我已连线到网际网络? 原来当中大有文章!
原文 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 怎么知道我已连线到网际网络? 原来当中大有文章!的更多相关文章
- ARCgis已知线裁剪已知面
经常遇到需要在ArcGIS中,根据已知线图层(要素)切分已知面图层(要素).经过研究,利用topology拓扑菜单中的construct features可以实现.具体如下 现有用线图层A.面图层B, ...
- C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...
- [转]在 Windows 操作系统中的已知安全标识符(Sid security identifiers)
安全标识符 (SID) 是用于标识安全主体或安全组在 Windows 操作系统中的可变长度的唯一值.常用 Sid 的 Sid 标识普通用户的一组或通用组.跨所有操作系统,它们的值保持不变. 此信息可用 ...
- Win7程序运行出现Windows Based Scrip Host 已停止工作问题的解决方法
最近在使用类似于Teamviewer这样的程序时,突然运行不了,报错:Microsoft Windows Based Scrip Host 已停止工作的问题,从系统日志来看,好像是空指针问题,但是又无 ...
- Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!
Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! 转载 原文章地址:点击 2014-01-09 Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! ...
- Windows Server 2012 R2在桌面上显示计算机/网络图标
原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...
- ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径
上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...
- Windows上的的神技能,你知道几个?(Windows技巧大全,已更新)
不用借助任何第三方软件,其实Windows也大有可为——比你目前了解得至少要多得多,强大技能快来get起来! 1.文件隐藏谁的电脑里没点小秘密?东藏西藏到最后自己都找不到了有木有?今天教大家个隐藏文件 ...
- Windows Azure 自动伸缩已内置
WindowsAzure平台提供的主要优点之一是能够在有需要时快速缩放云中的应用程序以响应波动.去年7月以前,您必须编写自定义脚本或使用其他工具(如Wasabi或MetricsHub)来启用自动 ...
随机推荐
- zoj3822 期望dp
每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数 dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数 那么dp[n][m][k] = p1 * ...
- css 实现table 隔行变色
<html> <head> <title>Member List</title> <style> <!-- .datalist{ bo ...
- libyuv编
下载代码(墙): git clone http://git.chromium.org/external/libyuv.git 用 make 编译(linux.mingw.cygwin): mak ...
- Ubuntu下使用虚拟机安装Windows XP(sunvirtualbox)
看完这个教程之后,网银?淘宝?CS?魔兽?---一个都不能少!好了,教程开始! 首先下载虚拟机,下载地址:http://download.virtualbox.org/virtualbox/3.1.0 ...
- UE4编码规范
翻译原文为Unreal 的官方!自己看着总结了一下,不一定每条都能对上.不足之处,请多多不吝赐教! 原文地址: unreal CodingStandard UE4编码规范 在Epic,有简单几条代码 ...
- 浏览器被劫持到http://hao.169x.cn/?v=108的解决办法
不管什么浏览器打开都是 http://hao.169x.cn/?v=108 1.下载wmi tool,(微软官网下载,我的下载地址是: http://120.52.73.52/download.mi ...
- WPF 3D:使用GeometryModel3D的BackMaterial
原文 WPF 3D:使用GeometryModel3D的BackMaterial 使用BackMaterial,我们可以定义3D物体的内部材质(或者说是背面),比如,我们定义一个四方体容器,外面现实的 ...
- DB2 “The transaction log for the database is full” 存在的问题及解决方案
DB2在执行一个大的insert/update操作的时候报"The transaction log for the database is full.. "错误,查了一下文档是DB ...
- Asp.net获取用户名和IP
1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:Page.Request.Use ...
- ImportError with IronPython in C#
I was using IronPython to execute python code inside my C# implementation lately, and I encountered ...