zoukankan      html  css  js  c++  java
  • Windows 10能上网但是显示无法连接到Internet

    别的小朋友都没事,咋就你有问题呢?

    问题原因

    首先我们看一下为什么会出现这种问题。“我明明能上网,你为什么觉得我上不了网?”

    Windows检测能否上网的评判标准有两个,一个是能否解析DNS,另一个是能否访问HTTP。具体来说就是能否正确解析一个域名到指定的IP地址,以及能否访问指定的HTTP地址获得指定的内容。

    DNS解析这一个,我还是不太清楚具体是怎么样的。根据我目前的实验,应该是域名和IP必须是一个DNS服务器,也就是这个地址的53端口要能连接。

    设置这些参数,也就是请求哪个域名,哪个HTTP地址是在注册表里设置的,位置如下

    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

    根据上面说的,只要系统没有解析到正确的IP,或者没有获得HTTP的内容,就判断你没有连接网络。

    解决办法

    我们看一下注册表的内容

    其中最重要的是ActiveDnsProbeContent(6)、ActiveDnsProbeHost(6)、ActiveWebProbeContent(6)和ActiveWebProbeHost(6)这几个。

    如图里的,DNS验证就是看dns.google是否对应8.8.8.8我还不是很懂为什么这个域名还要是个DNS服务器,一般的DNS服务器不都是IP吗。而且我都已经能解析这个域名了,也就是说我已经有DNS服务器了,为什么还要找连接一个DNS服务器(连接他的53端口);HTTP验证就是访问 http://www.msftconnecttest.com/connecttest.txt 这个地址,看内容是不是 Microsoft Connect Test 。

    知道了这些,就可以根据情况来对这些值进行更改。那原来的默认值为啥老是检测失败捏?大概是因为墙吧(摊手

    这些值具体改成什么,或者说用什么其他方法来让网络检测通畅,网上已经有大量的帖子了。我就不再赘述了。这里只提一下思路吧,改HOST文件(没试过);自建验证服务器;学校封53端口并且只能用学校的DNS服务器(说你呢大连理工),把自己的域名解析到学校的DNS服务器。

    呜呜呜,为什么我还是不行

    那既然网上已经有很多帖子说这件事,我为什么还要写这篇文章呢?那当然是因为我试了无数遍上面的方法,但还是没有解决。呜呜呜,哭死

    终于,今天忽然想起来一件事,可能是导致这个问题的原因。先看一下这篇文章:https://www.cnblogs.com/roadwide/p/10479723.html

    简单总结就是,先前因为写了自动连接校园网的脚本但系统还是弹出登录页面感觉很烦就把“网络检测”这个功能给关了。

    当我想到这个问题的时候我真是哭笑不得,虽然目前还没完全确定就是这个原因,但我觉得基本上就是了。

    我们看一眼这个“关闭 Windows 网络连接状态指示器活动测试”的具体描述是什么

    1、按下“Win+R”组合键呼出运行,在框中输入“gpedit.msc”按下回车键打开“本地组策略编辑器”;

    2、在本地策略组中依次展开:“计算机配置”-“管理模板”-“系统”-“Internet 通信管理”—“internet 通信设置”;

    3、找到“关闭 Windows 网络连接状态指示器活动测试

    此策略设置会关闭由 Windows 网络连接状态指示器(NCSI)执行的活动测试,这些测试可以确定计算机是连接到了 Internet 还是连接到了受较多限制的网络。

    NCSI 作为确定连接级别的一部分,会执行以下两种活动测试之一: 从专用 Web 服务器下载页面,或对专用地址执行 DNS 请求。

    如果启用此策略设置,则 NCSI 不会运行这两种活动测试的任何一种。这可能会降低 NCSI 以及使用 NCSI 的其他组件确定 Internet 访问的能力。

    如果禁用或未配置此策略设置,NCSI 将运行这两种活动测试之一。

     也就是说,我之前的设置让系统不进行网络检测。那就能解释的通我之前实验的离奇结果了

    1、系统的疑难问题解决工具检测,然后重置网络,然后能正常显示网络连接两天,然后过两天就又坏了。

    因为我关闭了网络检测,导致网络检测只在网络重置的时候进行检测。然后我猜测,关了那个检测功能之后,就是隔几天检测一次,然后碰上能连接就显示能连接几天,检测失败就显示无法连接。也可能是其他的什么机制,总之就是他不检测我是不是联网了。

    2、我在重置网络后显示能连接的时候以及显示无网络连接的时候对注册表的检测选项进行更改,无论是正确的检测域名还是错误的,都不会导致网络连接状态的变化

    我当时真是怎么想也想不通,为什么这个连接状态跟我设置的检测参数完全无关,完全不同步。因为他根本不检测啊!

    3、使用https://github.com/crazy-max/WindowsSpyBlocker 这个工具检测,无论他通不通过,系统都保持原来的样子

    原因还是同上。并且根据这个软件的检测结果让我一度怀疑是学校禁止其他DNS服务器导致的,但是我把自己的域名解析到学校的DNS,并且在软件里检测通过时,系统状态仍然显示没有网

    总之,就是无数次的疑惑,无数次的尝试,无数次的失败,烦死了要。今天终于灵光一现,我日哦。

    然后我又进行了一些实验,证实了我的猜测

    1、关掉检测网络连接状态,设置正确的检测参数,重启 --> 显示已连接
    2、关掉检测网络连接状态,设置错误的检测参数,重启 --> 显示已连接
    3、开启检测网络连接状态,设置正确的检测选项,重启 --> 显示已连接
    4、开启检测网络连接状态,设置错误的检测选项,重启 --> 显示无网络

    所以,最终的解决办法就是把上面的那个组策略禁用掉。(微软怎么喜欢用这种双重否定表肯定呢

    我觉得我的问题应该解决了,但是还得再等两天观察观察。要是还有问题,那真是可以杀了我了

    其他想说的话

    1、为什么能上网了你还非要管系统的那个显示状态?不是我非要管,而是微软旗下的软件他就只认那个状态,他不像浏览器,你企图上网他就试一试,能上就上,不能上拉到。微软的软件,包括但不限于office、xbox、微软商店,只要系统状态显示无连接,他连试都不试,直接告诉你“我不管,系统告诉我你没网,你就是没网,你没网那我也不连了”,结果就是office等软件,在需要联网的情况下直接摆烂。最致命的就是等登录账号的时候,他一旦检测到你系统的网络连接是没网,就直接账号都不让你输入,弹一个“你没有网,还想登录”的窗口。(真是MMP了

    2、网上有人说DNS和HTTP两个验证都要通过系统才认为你有网,但是根据组策略里的描述,两个检测只要通过一个就可以了

    3、别的小朋友都没事,咋就你有问题呢?这也是我经常遇到的问题,网上所有的解决办法都试过了,但是就是不行。或者直接就是我碰到的问题根本没人碰到过,没人提过。为什么?因为有些事,正常用户根本不干,就比如组策略这个,谁没事改这个啊。这就导致,有些问题,我的花很多时间才能排查出来,然后最后才弄明白,原来是因为我之前改了这里,所以别的小朋友都没事,就我有问题。我忽然感觉程序员也没有那么容易失业。大家都说医生是越老越吃香,因为经验积累越来越多,碰到的情况足够多,就有不可替代性了,有些病有些手术就是比别的或者年轻的医生好。说程序员是吃青春饭的,但是我现在觉得这句话不对,程序员也在不断积累经验,积累解决各种疑难杂症的经验,这跟医生有什么区别吗。当然,如果每天都是在重复搬砖,不学习,没有经验的积累,那确实容易被淘汰。

    4、前几天跟导师讨论问题,老师说了一句:“不是咱的想法不行,而是时候还不到,积累还不够。可以先放着,等以后再解决”。我曾面临过很多问题,很多想解决了无数次但最终都以失败告终的问题,但在一而再,再而三,三而四的尝试下,最终都解决了。因为在这些尝试的间隙,在我进行其他问题的探索的时候,我对原先问题的认知也在潜移默化的上升。有些东西解决不动,就是积累的还不够。只要一直报着要解决这个问题的想法,最终都会解决的。

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/roadwide/p/15766204.html
Copyright © 2011-2022 走看看