字节一面:输入URL,但是访问失败的可能原因是什么?如何排查?
当时只回答了三种可能,分别是URL格式错误、网络不稳定、域名和ip的映射关系改变,面试完后认真复盘总结了更全面问题的可能性。
思考角度:从HTTP的状态码角度分析原因
返回4××的状态码
表示服务器的请求端出现了错误,可能是URL的格式写错了,也可能是请求的资源根本不存在
返回5××的状态码
可能是当前服务器被大量请求冲垮、服务器启动了限流机制、服务器正在维护关闭了对外的服务
思考角度:从输入URL到页面展示过程中每一个环节可能出现的问题
用户输入错误
请求URL格式错误
浏览器故障
需要重启浏览器
缓存还是旧版本的问题
在输入URL后,浏览器首先会在浏览器缓存中找域名对应的 ip,如果浏览器缓存中不存在则操作系统会在其缓存中找 ip,若操作系统缓存中依旧没有,那么在 hosts文件中找,若在这三个过程中任意一个过程找到缓存,那么会给浏览器返回ip,如果受访网页重新对域名和ip地址做了映射,那么在缓存中的映射就是错的,无法通过缓存返回的 ip 建立连接。
解决方法就是:清除缓存
防火墙设置
首先通过 nslookup 命令查找域名对应的 ip 地址
然后在防火墙设置中查看“出站规则”中是否对要访问的 ip 启用了禁止
DNS服务器的问题
DNS被劫持:DNS中的映射表被恶意篡改,将原本正确的 ip 地址改为别的 ip,使得网址不能访问或者访问到了别的网址
解决方法:可以不通过本地DNS服务器,直接访问公共的DNS服务器解决
网站服务器问题
①网站正在遭受大量的请求访问,此时网站可能出现崩塌或者开启限流机制,就像0点秒杀大促的情况,怎么也登不上系统
②网站正在升级或者维护,关闭了对外的服务
网络受到安全攻击
用户发送的请求包被劫持,用户发送的包根本就没有被服务端收到