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

简介: 原文 Windows 怎么知道我已连线到网际网络? 原来当中大有文章! 标题这个问题好像很简单, 但原来深入研究起来还真的不是”因为我能看到网页嘛”这样简单的答案. 研究这个课题是由于公司内部的防火墙自动把一些连线封琐起来, 检视之下发现好些连线尝试连接到以下一条连结: http://www.

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

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

image

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

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

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

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

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

image

 

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

image

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

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

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

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

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

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

image

 

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

电脑原先处于无网络状态

image

 

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

image

 

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

image

 

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

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

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

image

 

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

image

image

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

image

 

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

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

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

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

image

 

了解了这些, 我还是建议可以看看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

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

image

参考连结:

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?

目录
相关文章
|
24天前
|
缓存 网络协议 数据安全/隐私保护
[运维笔记] - (命令).Windows server常用网络相关命令总结
[运维笔记] - (命令).Windows server常用网络相关命令总结
117 0
|
2月前
|
网络协议 关系型数据库 网络虚拟化
Windows网络服务综测刷题
Windows网络服务综测刷题
20 0
|
4月前
|
人工智能 网络协议 API
[笔记] Microsoft Windows网络编程《三》网际协议(三)
[笔记] Microsoft Windows网络编程《三》网际协议(三)
|
4月前
|
人工智能 网络协议 API
[笔记] Microsoft Windows网络编程《三》网际协议(二)
[笔记] Microsoft Windows网络编程《三》网际协议(二)
|
4月前
|
网络协议 API 网络架构
[笔记] Microsoft Windows网络编程《三》网际协议(一)
[笔记] Microsoft Windows网络编程《三》网际协议
|
4月前
|
网络协议 API 网络性能优化
[笔记] Microsoft Windows网络编程《二》设计Winsock
[笔记] Microsoft Windows网络编程《二》设计Winsock
|
4月前
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
[笔记] Microsoft Windows网络编程《一》WinSock简介(四)
|
4月前
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(三)
[笔记] Microsoft Windows网络编程《一》WinSock简介(三)
|
4月前
|
网络协议 程序员 API
[笔记] Microsoft Windows网络编程《一》WinSock简介(二)
[笔记] Microsoft Windows网络编程《一》WinSock简介(二)
|
4月前
|
存储 网络协议 程序员
[笔记] Microsoft Windows网络编程《一》WinSock简介(一)
[笔记] Microsoft Windows网络编程《一》WinSock简介

相关产品

  • 云迁移中心