Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!
Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!
转载
原文章地址:点击
2014-01-09
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的描述
问题来了,如果公司有些电脑根本就不会接触网际网络,或防火墙并没有开放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://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 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!的更多相关文章
- windows server 2008 R2 远程连接用户数修改
设置windows server 2008 R2 远程连接用户数修改,三步搞定 1.运行(win+R)中输入tsconfig.msc 2.双击“限制每个用户只能进行一个会话”,取消这个选项负选框 3. ...
- c# 判断网络是连接到互联网
方法1:InternetGetConnectedState [System.Runtime.InteropServices.DllImport("wininet") ...
- Windows下用C语言连接Mysql注意问题
原文:Windows下用C语言连接Mysql注意问题 环境是:在VS6.0 安装Mysql后,我们需要相应的头文件以及lib文件,所以安装过程必须是完整安装.否则不会生成include文件夹哦~ 具体 ...
- [转]windows BLE编程 net winform 连接蓝牙4.0
本文转自:https://www.cnblogs.com/webtojs/p/9675956.html winform 程序调用Windows.Devices.Bluetoot API 实现windo ...
- windows BLE编程 net winform 连接蓝牙4.0
winform 程序调用Windows.Devices.Bluetoot API 实现windows下BLE蓝牙设备自动连接,收发数据功能.不需要使用win10的UWP开发. 先贴图,回头来完善代码 ...
- windows XP系统搜索无线网络时提示“windows无法配置此无线连接”,如何处理?
转自:http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_12839009034375918.html 文章编号:C191612 201 ...
- 获得Windows系统的远程桌面连接历史记录
转载:http://www.mottoin.com/tech/109219.html 渗透技巧—获得Windows系统的远程桌面连接历史记录 0x00 前言 在渗透测试中,远程桌面连接的历史记录不可忽 ...
- 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件
######sample 1:windows下安装pycharm并连接Linux的python环境 https://www.cnblogs.com/junxun/p/8287998.html wind ...
- 如何在linux上手动连接到互联网
作者 @飞洲人飞舟魂转载请注明出处. 一直以来对linux的网络管理不大明白,今天研究了一下网络的手动配置,现在记录一下.我使用Ubuntu20.04.1来进行演示. 介绍 首先我们先明确一些概念性的 ...
随机推荐
- Fastjson <=1.2.24-反序列化-任意命令执行
漏洞分析 https://www.secpulse.com/archives/72391.html 复现参考 https://www.cnblogs.com/hack404/p/11980791.ht ...
- 「NOIP模拟赛」Round 3
Tag 计数+LIS, 二分+ST表, 计数+记搜 A. 改造二叉树 Description 题面 Solution 如果目标序列非严格递增,或者说目标序列是不下降的,那么答案就是 \(n\) 减去最 ...
- pyspider的环境安装
第一:确认自己的Python版本3.6.x(因该版本与pyspider较为适应,其他版本易出错) 如果不是3.6版本的,且想将版本替换成3.6版本的有以下处理方法: 1.再装一个3.6版本python ...
- 关于github的使用学习心得
先写先介绍一下如何用github上创建一个项目吧. 用户登录后的界面如上所示.右下角是我们已经建好的库.点击其中任何一个就可以查看相应的库了.如果要新建一个项目的话,就点击Start a projec ...
- 【Azure 应用服务】App Service站点Header头中的中文信息显示乱码?当下载文件时,文件名也是乱码?
问题描述 在本地开发的站点,响应头中的中文可以正常显示,部署到Azure App Service站点后,响应中文乱码.通过多方面验证,在代码中设置Response的Headers会显示乱码,而直接配置 ...
- 振兴中华(蓝桥杯13年第四届省赛真题 JAVA-B组)
思路:因为只能横向或纵向跳到相邻的格子里,所以到'华'字有两种方法:①从左边的中横向跳过来 ②从上边的中纵向跳过来 直接递推即可. 标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格 ...
- PhpStorm/WebStorm实用技巧
我常用的IDE设置和功能 1) 使用IDE管理远程主机 Tools -> Deployment -> Browse Remote Host 其中功能十分强大 自己去探索 关键提示: 手动/ ...
- 「新特性」Spring Boot 全局懒加载机制了解一下
关于延迟加载 在 Spring 中,默认情况下所有定的 bean 及其依赖项目都是在应用启动时创建容器上下文是被初始化的.测试代码如下: @Slf4j @Configuration public cl ...
- 【笔记】《Redis设计与实现》chapter16 Sentinel
16.1 启动并初始化Sentinel 初始化服务器 Sentinel本质上只是运行在特殊模式下的Redis服务器,启动第一步就是初始化一个普通的Redis服务器 使用Sentinel专用代码 使用r ...
- joda-time的简单使用及mysql时间函数的使用(今天,本周,本月)
近期在做一些首页的统计数据复习了下mysql的时间函数,以及后续修改成 传入时间查询时使用的joda-time 软件简介 JodaTime 提供了一组Java类包用于处理包括ISO8601标准在内的d ...