游客发表
路由器指示灯全绿,可p开网网线插得死死的可p开网,QQ能发消息,可p开网微信能收图片,可p开网偏偏浏览器里那个圆圈转个不停,可p开网最后给你一句“无法访问此网站”。可p开网你气得拍桌子,可p开网但ping一下百度,可p开网延迟20毫秒,可p开网丢包0%。可p开网这破网到底算通还是可p开网不通?
问题出在“通”的定义上。ping用的可p开网是ICMP协议,它只负责确认网络层通不通——相当于你打电话能听到对方“喂”了一声,可p开网但对方是可p开网不是真的愿意跟你聊天,那是可p开网另一码事。网页走的是HTTP或HTTPS,跑在TCP协议上,端口80或443。ICMP和TCP是两条路,前者畅通无阻,不代表后者没被堵死。
最常见的堵点,是防火墙。Windows自带的防火墙有时抽风,或者你装的安全软件把浏览器的出站请求拦了。有个朋友找我修电脑,症状一模一样,最后发现是某国产安全软件把chrome.exe列进了“禁止联网”名单。你ping的时候,防火墙懒得管;浏览器一发起TCP连接,它立马翻脸。解决方式也简单:把浏览器从白名单里放出来,或者干脆关掉防火墙试试。
另一个高频原因,是DNS解析出问题。ping域名能通,说明DNS把域名翻译成了IP——但注意,ping用的可能是系统缓存的旧IP。网页访问却要重新向DNS服务器查询,如果DNS服务器本身响应慢或返回错误结果,浏览器就卡在“正在解析主机”那一步。你可以在命令行里敲nslookup baidu.com看看返回的IP对不对,或者临时把DNS改成8.8.8.8再访问。有一次我碰到的情况更诡异:DNS解析正常,但返回的IP是境外节点,被运营商劫持了,网页直接超时。
还有一种情况,是MTU(最大传输单元)设置不对。宽带拨号上网时,如果MTU值设得太大,数据包被拆得七零八落,TCP握手包可能直接丢失。ping默认发小包,能过;网页要传大包,就卡在半路。你可以用ping -f -l 1400这种命令测试,逐步调小MTU值,直到找到稳定值。这个坑在老旧路由器上特别常见。
别忽视代理设置。浏览器里挂了代理,但代理软件没启动,或者代理服务器地址失效,就会出现“能ping通但网页打不开”的假象。因为ping不走代理,直接发ICMP包;浏览器却傻乎乎地往一个不存在的代理端口上撞。我见过一个同事,折腾了半天网卡驱动,最后发现是Edge浏览器里默认开启了“使用系统代理”,而系统代理指向一个早已删除的VPN。
最后提一个冷门的:IPv6优先。如果你的电脑同时有IPv4和IPv6地址,而浏览器优先尝试IPv6,但你的IPv6连接是坏的——ping IPv4地址能通,ping IPv6却全丢。这时候网页会一直等待IPv6响应,直到超时。解决办法是在网络适配器设置里临时禁用IPv6,或者把DNS改成只返回IPv4记录。
排查顺序别乱。先试ping 域名,再试ping IP,然后telnet 域名 80或443看端口是否开放。如果telnet提示连接失败,基本就是防火墙或服务端问题;如果telnet能通但网页打不开,八成是HTTP层的问题,比如代理或浏览器缓存。别一上来就重装系统,那是最笨的办法。
网卡驱动也可能背锅。某些老驱动对TCP offload功能支持不好,导致大数据包处理异常。更新驱动或者到网卡高级设置里关闭“IPv4 Checksum Offload”,有时候立竿见影。这招我是在一次修服务器时学会的,当时那台机器ping网关稳定,但访问任何网页都超时,最后靠禁用硬件校验解决。
写到最后,想起一个经典案例:有人ping通但打不开网页,折腾了三天,最后发现是路由器里把80端口封了,而他自己忘了。这世上没有玄学,只有没查到的配置。
友情链接