公众号旧文

Windows 是如何判断“无 Internet,安全”的

作者:胖子阅读 —

相信你也一定见到过下面的这种情况:

图片

一般出现在刚连上 WiFi 时,或者路由器正常,但是光猫故障时。

这个功能叫 Windows NCSI:

Network Connectivity Status Indicator,网络连接状态指示器

该功能不是简单看有没有 WiFi,而是 Windows 主动探测互联网连通性。

1. 整体流程

无线网卡连接 WiFi
        |
        v
DHCP 获取 IP
        |
        v
检查网关是否可达
        |
        v
NCSI 探测微软服务器
        |
        v
判断 Internet 状态
        |
        v
显示:Internet访问 / 无Internet

第一阶段:有没有拿到 IP

连接 WiFi 后,Windows 会先检查 IP 地址

例如:

IPv4:
192.168.1.100
网关:
192.168.1.1
DNS:
192.168.1.1

如果 DHCP 都失败,会显示:无 Internet

第二阶段:测试默认网关

Windows 会尝试:

ping 192.168.1.1

也就是路由器。

第三阶段:NCSI 网络探测

Windows 有一个服务:

Network Location Awareness

服务名:

NlaSvc

该服务负责网络状态判断。

IPv4 检测

Windows 会访问:

http://www.msftconnecttest.com/connecttest.txt

请求:

GET /connecttest.txt

正常返回:

Microsoft Connect Test

表示:互联网可访问,然后显示:Internet访问

IPv6 检测

类似:

http://ipv6.msftconnecttest.com/connecttest.txt

第四阶段:DNS测试

Windows 还会检查:

dns.msftncsi.com

如果 DNS 正常,说明:DNS可用

所以实际上判断:

测试 作用
DHCP 有没有局域网地址
网关 WiFi是否正常
DNS 域名解析
HTTP探测 是否能访问公网

为什么有时候能上网,却显示“无Internet”?

这个很常见。

例如你的网络:

电脑
 |
路由器
 |
代理
 |
互联网

能访问:

google.com
github.com

但是微软探测:

msftconnecttest.com

失败。

于是 Windows 就会提示:无 Internet

但是实际上有网。

企业 WiFi 为什么会跳登录页面?

例如酒店:

连接 WiFi
↓
显示:需要登录
↓
打开网页认证

这叫:

Captive Portal(强制门户)

流程:

Windows访问:

http://www.msftconnecttest.com/connecttest.txt

结果不是:

Microsoft Connect Test

而是:

302 Redirect
https://hotel-login.com

Windows判断网络存在,但是需要认证

然后弹出需要采取操作

可以自己测试

Windows:

打开浏览器

访问:

http://www.msftconnecttest.com/connecttest.txt

正常显示:

Microsoft Connect Test

异常可能:

404
跳转
打不开

Windows 相当于内置了一个小型网络探针,它周期性判断:

链路状态
DNS状态
HTTP状态
公网状态

只是它探测目标固定是 Microsoft NCSI 服务器

高级一点:修改探测地址

注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

里面:

ActiveWebProbeHost

默认:

www.msftconnecttest.com

还有:

ActiveWebProbePath
/connecttest.txt

可以改成自己的:

例如:

http://check.example.com/status.txt

实现个性化的网络健康检测。

一句话总结:

Windows WiFi 的“Internet访问/无Internet”不是 WiFi 信号判断,而是通过 DHCP → 网关 → DNS → 访问微软 NCSI 探测地址,综合判断当前网络是否具备公网访问能力。