DNS设置错误,浏览器能够正常访问网站么?

简介:

大家在看到这个问题,第一反应是不是都认为:不能?

嘿嘿,我料定大家的正常思路也该是这样。

起初我也认为应该是这样但是前段时间遇到一件事让我改变了这个固有观念:

前段时间机房的dhcp服务关闭,我们不得已开始使用静态IP,此时由于老师没说DNS服务器在另外一台机器上,我们想当然的认为DNS的IP就是原来DHCP的IP,因为我们使用的是360浏览器,我发现设置好静态IP并不影响我们正常上网查资料。之后由于51cto的视频看不了,就去问老师原因,老师看了IP说DNS设置错误。老师一改就恢复正常。我当时就困惑了,DNS设置错误不就解析不了域名了么,怎么还能正常登录网站呢?然后就这个问题问了老师,老师也很意外,开始用抓包工具进行检测:同时打开IE和360,将DNS故意设置错误,抓包工具看到,IE很规矩的按照我设置的DNS去找域名进行解析,而360则直接访问51cto的IP地址。看到这的时候,;老师也蒙了。他也困惑360到底具备什么工具怎么会直接去访问网站的IP呢。
之后回家也测试了一番,用了IE,遨游,360急速版。依旧是将DNS故意设置错误,结果发现只有360急速能正常访问网站,其余两个浏览器都无法访问。


我们先不去追究它的原理到底是什么,我们先通过实验验证一下。

我们一般的环境下都是用的DHCP分配的IP,DNS。

实验前,我们先将DNS设置为:主DNS:1.2.3.4,副DNS:5.6.7.8

浏览器:我采用IE,Firefox,chrome,百度,360,Opera这六个浏览器进行测试。

之所以选它们是有一定原因的。

大家都知道目前三大主流浏览器内核:

IETridentFirefoxGeckoChromeWebKit(现在貌似又改进为Blink)。

选它们就是为了检验浏览器的内核是否进行了DNS内置的这些设置,而另外的三款则是用的比较有代表性的三个,Opera性能,速度都不错的浏览器;360则是主攻安全;百度,仅仅是个人喜好。

360百度这两个的浏览器内核是基于开源的WebKit进行的二次开发。如果错了还请指正

实验开始


准备工作:

wKioL1QATIbD-ftMAAF3669_Rs8038.jpg

wKiom1QAS2_zsFyuAAHeAwJ_Jqw476.jpg

            wKioL1QAT5vBPXz-AAOHM0r9ldA530.jpg

            我们主要对DNS进行分析,因此我们看的时候将其他的包过滤。只关注DNS

实验开始:

开启wireshark的抓包进程

wKioL1QATIbyU8MnAAJB0Bqh0oY866.jpg

             选择与外网连接的网卡class,之后点击start

先对IE,Chrome,Firefox进行测试:输入51cto网址

wKioL1QATIfwGhhyAADdTnA2hPo335.jpg

            IE未能打开网页

wKioL1QblNKRInJhAAC5_-7_nRw300.jpg

           Google加载过程

wKiom1QblLjTaK6SAABpr4NjFIQ507.jpg

           网页未能打开


wKioL1QjhsbzlJNnAALp8uMO0Js580.jpg

  Firefox加载过程

wKioL1Qjhsei9sbVAAMK96rFy1o222.jpg

 Firefox未能打开网页

wKioL1QjhsnwkR4gABEnvnaZlXc898.jpg

测试结果:失败

这三款内核的代表者很实在,在DNS设置错误的情况下老老实实的按照我设置的错误DNS查找对应的域名。网页没能打开。(其实这三者的DNS包都大同小异,因此就以一图表示了)


下面对Opera浏览器进行测试:输入51cto网址

wKioL1QjhsCgyuW_AAHZgQoOWIs723.jpg

 加载过程

wKiom1QjhpzQILTCAAHE4Di2o9k243.jpg

  加载结束,未能打开网页

wKiom1Qjhp7yEFJyABFX6E-hPLs814.jpg

结论:失败。Opera还是很实在的一款浏览器,依旧按我的设置进行查询。可惜了。


下面开始对百度进行测试:输入51cto网址

wKiom1QjhqeifbNWAAmUMqSvJ54411.jpg

 完美加载

wKioL1QjhsyBpP5WAAsCZC-Qxzs092.jpg

  百度成功打开网页

wKiom1QjhqrANugUABDWcuJm5sg860.jpg

 起初老老实实按规矩读取我设置的DNS

wKioL1QjhtDz2zkxABITHffuM3g164.jpg

  该图出现了144.144.144.144.

下面付了两张它http的包大家感兴趣可以看看,我是没看出什么特别的地方。

wKioL1QjhtKiOwyTABMTI6mSeMs057.jpg

wKiom1QjhrDTbZeDABHK60AswVw260.jpg

结论:成功。我们通过DNS包可以发现,起初百度也是老老实实按我设置的DNS进行域名查询,可没过多久突然蹦出了公共DNS:144.144.144.144。这是什么情况?我们先不讨论。

下面看看360的表现吧

依旧是输入51cto网站

wKiom1QjhraD_YOXAAcn6pXVXsQ967.jpg

   网页打开,但是图片看不到,加载的不够完美

wKiom1QjhreQDMrgAAp1ZnuWsmw872.jpg

wKioL1Qjht3A0kINABFEuPfUWEE303.jpg

 刚开始依旧按规矩来

wKioL1QjhuOwsQv4ABD8c3Ug_7c134.jpg

  这张图出现了公共IP8.8.8.8

wKioL1QjhuqQ83YqABDbLByzfto801.jpg

wKioL1QjhvDDXYHSABFZgrv6Jr4383.jpg

  下面也为360付了一张http的抓包图。

wKiom1Qjhs_R0AWDABS12t-IOHI726.jpg

结论:成功。起初360也是老老实实地按照我设置的DNS进行域名查询,没过多久,也是突然蹦出一个公共DNS:8.8.8.8

实验总结:

IE,Chrome,Firefox,Opera都失败。百度,360成功

IE,Chrome,Firefox的失败排斥了浏览器内核设置了DNS的这个可能。

百度,360的成功证明这个功能是他或他们独立开发出来的。

实验的结果可能让大家大感意外。最不被看好的两款浏览器反而在DNS设置错误的情况下不受影响的访问网站,为什么呢?

当初自己也对此很困惑,查了360所有的更新补丁说明也没有发现有DNS的相关说明,百度也是。

之后就在论坛发帖,没想到还有几位专家回复

他们的答案如下

你故意将DNS服务器地址设错,那么按照常理来说你不会有机会访问51cto。

但是请注意360安全浏览器是一个安全浏览器,作为浏览器最最忌讳的就是发生DNS劫持这会在根本上瓦解360的安全机制。换句话说,如果读取了本地设置作为默认DNS,那么如果这个DNS是被劫持的(也就是说,我可以把www.baidu.com,指向任意一个我伪造的IP地址或网站)那么就算360浏览器再牛,也没有办法保证用户安全。处于这个考虑,360必然内置安全的DNS服务器,直接使用360内置DNS IP来解析地址或者作为比对DNS是否被劫持的手段。由此可见。问题必然出现在360浏览器上。多说一句,DNS只提供域名解析功能所以,如果你直接使用IP地址进行访问,就算你没有配DNS一样可以得。因此如果360内置一个较为公正的DNS IP地址,然后所有在360浏览器的访问都有这个IP来解析,只有360能上网也就没有问题了。


我看后,有点懂了,之后又问了其他人。得出了一个目前自己比较信服的答案。

360和百度都是在开源浏览器内核上进行的2次开发与优化(很明显百度的优化做的更完善点),想到中国大多数人对DNS都不明白,更别提设置了。因此他们想到干脆我们的浏览器帮你把这个问题解决算了。之后他们就写了相应的策略,就是当本地的DNS服务器不能提供正常的服务时就将DNS指定到他们设置的比较公正安全的DNS上供解析域名。之后就出现了我们在上面看到的结果。之前好多人对360都有点抵触,其实客观来说,360的浏览器还是靠谱的。(真不是为360做广告啊)但是这两款浏览器的内部策略或者说内核到底是不是如此我就不知道了,如果360,百度浏览器的开发人员看到了,还请解释一下。这是目前我总结的自己信服的答案。大家有不同意见可以交流一下。


PS:我发现如果我们仔细观察生活的话,还是能发现不少有趣的问题的。










本文转自 紫色的茶碗 51CTO博客,原文链接:http://blog.51cto.com/chawan/1558074,如需转载请自行联系原作者
目录
相关文章
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
788 17
使用Web浏览器访问UE应用的最佳实践
|
Web App开发 缓存 UED
如何设置浏览器的缓存策略?
【10月更文挑战第23天】通过合理地设置浏览器的缓存策略,可以在提高网页性能、减少网络流量的同时,确保用户能够获取到最新的内容,从而提升用户体验和网站的性能优化效果。
1651 60
|
弹性计算 运维 网络安全
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
2288 6
|
监控 前端开发 安全
如何开发一个网站:全面解析与实战指南
在数字化时代,网站是企业和个人展示形象、传播信息的关键平台。本文提供从规划、设计、开发、上线到后期维护的全方位网站开发指南,涵盖明确目标、分析用户、设定功能需求、设计风格、技术选型、测试部署及优化升级等内容,帮助你打造既美观又实用的网站。
1375 4
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
1492 1
|
域名解析 网络协议 前端开发
浏览器输入域名网址访问后的过程详解
1、以91处理网为例,客户端浏览器通过DNS解析到www.91chuli.com,IP地址是202.108.22.5,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到202.108.22.5,然后通过TCP进行封装数据包,输入到网络层。
1131 2
|
Web App开发 API Windows
取接口访问者信息[IP,浏览器,操作系统]免费API接口教程
此API用于获取访问者的IP地址、浏览器和操作系统信息,支持70多种浏览器和操作系统。通过POST或GET请求至`https://cn.apihz.cn/api/ip/getapi.php`,需提供用户ID和KEY。返回结果包括状态码、消息、IP、浏览器和操作系统信息。示例:{"code":200,"ip":"175.154.88.178","browser":"Chrome","os":"Windows 10"}。详情见官网文档。
763 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
932 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1522 29

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS