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的描述

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. windows server 2008 R2 远程连接用户数修改

    设置windows server 2008 R2 远程连接用户数修改,三步搞定 1.运行(win+R)中输入tsconfig.msc 2.双击“限制每个用户只能进行一个会话”,取消这个选项负选框 3. ...

  2. c# 判断网络是连接到互联网

    方法1:InternetGetConnectedState         [System.Runtime.InteropServices.DllImport("wininet") ...

  3. Windows下用C语言连接Mysql注意问题

    原文:Windows下用C语言连接Mysql注意问题 环境是:在VS6.0 安装Mysql后,我们需要相应的头文件以及lib文件,所以安装过程必须是完整安装.否则不会生成include文件夹哦~ 具体 ...

  4. [转]windows BLE编程 net winform 连接蓝牙4.0

    本文转自:https://www.cnblogs.com/webtojs/p/9675956.html winform 程序调用Windows.Devices.Bluetoot API 实现windo ...

  5. windows BLE编程 net winform 连接蓝牙4.0

    winform 程序调用Windows.Devices.Bluetoot API 实现windows下BLE蓝牙设备自动连接,收发数据功能.不需要使用win10的UWP开发. 先贴图,回头来完善代码 ...

  6. windows XP系统搜索无线网络时提示“windows无法配置此无线连接”,如何处理?

    转自:http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_12839009034375918.html 文章编号:C191612     201 ...

  7. 获得Windows系统的远程桌面连接历史记录

    转载:http://www.mottoin.com/tech/109219.html 渗透技巧—获得Windows系统的远程桌面连接历史记录 0x00 前言 在渗透测试中,远程桌面连接的历史记录不可忽 ...

  8. 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件

    ######sample 1:windows下安装pycharm并连接Linux的python环境 https://www.cnblogs.com/junxun/p/8287998.html wind ...

  9. 如何在linux上手动连接到互联网

    作者 @飞洲人飞舟魂转载请注明出处. 一直以来对linux的网络管理不大明白,今天研究了一下网络的手动配置,现在记录一下.我使用Ubuntu20.04.1来进行演示. 介绍 首先我们先明确一些概念性的 ...

随机推荐

  1. Java 树结构的基础部分(一)

    二叉树 1.1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快.对于有序数组,还可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序 ...

  2. bjd_ctf

    1.抓包修改 ​ 提示修改id,postman修改headers里面的id 分析得到id是admin加admin的base64编码,payload为id: adminYWRtaW4= 请求后又提示请使 ...

  3. 绿色物流-智慧仓储监控管理 3D 可视化系统

    前言 随着电子商务产业的迅速发展,快递爆仓已成为了困扰仓储物流的一大难题.大量的碎片化订单,传统仓储管理和运作方式已无法满足,加速仓储物流管理的智能化.自动化升级创新,延伸而出的智慧物流概念成为物流行 ...

  4. python网络编程-TCP服务端的开发

    #TCP服务端开发 2 #方法说明 3 """ 4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进 行绑定,表示本机的任何一个ip地址 ...

  5. java中的String,StringBuffer与StringBuilder

    String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁. StringBuffer对象则代表一个字符序列可变的字符串,当一个Stri ...

  6. restful设计风格

    restful是一种软件设计风格,并不是标准,它只是提供了一组设计原则和约束条件. ① restful 提倡面向资源编程,url接口尽量要使用名词,不要使用动词 ② 在url中可以体现版本号 ③可以根 ...

  7. JAVA题目:小芳的妈妈每天给她2.5元,她都会存起来,但是,每当这一天是存钱的第五题或者5的倍数的话,她都会去用掉6块钱。 问:至少经过多少天可以存到100块?

    1 /*题目:小芳的妈妈每天给她2.5元,她都会存起来, 2 但是,每当这一天是存钱的第五题或者5的倍数的话, 3 她都会去用掉6块钱. 4 问:至少经过多少天可以存到100块? 5 */ 6 /*分 ...

  8. 基于sklearn的波士顿房价预测_线性回归学习笔记

    > 以下内容是我在学习https://blog.csdn.net/mingxiaod/article/details/85938251 教程时遇到不懂的问题自己查询并理解的笔记,由于sklear ...

  9. 【JVM进阶之路】十:JVM调优总结

    1.调优原则 JVM调优听起来很高大上,但是要认识到,JVM调优应该是Java性能优化的最后一颗子弹. 比较认可廖雪峰老师的观点,要认识到JVM调优不是常规手段,性能问题一般第一选择是优化程序,最后的 ...

  10. java面试-线程池使用过吗,谈谈对ThreadPoolExector的理解

    一.架构说明: 二.为什么使用线程池,优势是什么? 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,那么超出数量的线程排队 ...