要想知道网页打不开的原因,我们需要从网页是怎么打开的原理讲起,相信这样更有助于帮助你理解。考虑到部分内容需要一定专业度的问题,讲的时候我会省略掉一些细节。
网页打开过程
我们把网页打开的过程假设成我要去成龙家拿个快递(龙叔好无辜)。但是我觉得这样比较好理解哈。
- DNS解析
在这里我们不用管DNS是啥。按我们上面假设的例子。我要去拿快递,首先要知道龙叔家在哪。DNS解析就是帮我找到龙哥家的地址。
- 浏览器和服务端建连
OK,上面我们已经知道龙叔家地址了,但我们不能贸然跑过去吧。龙叔家肯定保护措施很严,冒冒失失跑过去说不定被保安给抓了。不行不行,我们还是先给龙叔家打个招呼,告诉他我要去他家拿快递。这个打招呼确认的过程就是浏览器和服务端建立连接(TCP握手)的过程。
- 数据传输
好了,现在我们既知道龙叔地址,又打过招呼,接下来就可以出发了。想要拿到快递,我的路线是这样“家->龙叔家->拿到快递->返回家”。我走这条路线的过程就叫数据传输。
- 网页渲染
现在我已经成功从龙叔家拿到了快递(开心!)。接下来就到了开箱的时候了。毕竟开完箱我才能看到它的真面目。而我开箱的这个过程就是网页渲染(从服务端拿回来的文档需要经过浏览器的渲染才能成为你在网页上看到的内容,具体渲染细节就不讲了)。
总结
相信看完上面的概念,你对网页打开的过程有了一个大概的了解。那我们回到问题本身。为什么有些网页会打不开?
我们从上面几个阶段分别来分析总结下可能影响网页打不开的点:
DNS解析阶段
- DNS服务器故障导致DNS解析失败:找不到龙叔家了还咋拿快递啊?
- 本地host冲突:本来DNS服务器应该告诉我龙叔家住香港,完了家里人说龙叔住北京。关键我还更信家里人的,那可不凉凉了。
- DNS劫持:比如你用的一些不知名wifi或者无良运营商会把你本来要访问的网页劫持到别的地方去,或者让你打不开。
建连阶段
- 你访问的网页服务端故障(宕机/超时…):想给龙叔家打个招呼,电话打不通,啥方式都联系不到,龙叔家失联了,这可咋整。
- 本地网络故障:我失联了,凉凉了。
- The Great Wall:国外的访问不了一般这个原因,你懂的。
- 浏览器安全限制:部分高级浏览器如chrome、Firefox会对一些钓鱼网站进行拦截,SO!
数据传输阶段
- 网络传输慢(本地上行带宽/服务端下行带宽):本来约好2号去龙叔家拿快递,结果路上堵车,3号才到龙叔家。人家全家出去旅游去了。也有可能快递太重,路上走太慢。
- 你访问的网页服务端故障(宕机/超时…):到了龙叔家进不了门,没人鸟我。拿不到快递….卒。
网页渲染
- 网页太大、依赖资源太多:快递太大,拆快递速度太慢,拆的烦直接扔了。(浏览器内存溢出,凉凉)
以上就是我的一些个人理解,希望对你有帮助!谢谢