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这六个浏览器进行测试。

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

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

IE的Trident,Firefox的Gecko与Chrome的WebKit(现在貌似又改进为Blink)。

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

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

实验开始

准备工作:

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

实验开始:

开启wireshark的抓包进程

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

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

IE未能打开网页

Google加载过程

网页未能打开

Firefox加载过程

Firefox未能打开网页

测试结果:失败。

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

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

加载过程

加载结束,未能打开网页

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

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

完美加载

百度成功打开网页

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

该图出现了144.144.144.144.

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

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

下面看看360的表现吧

依旧是输入51cto网站

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

刚开始依旧按规矩来

这张图出现了公共IP:8.8.8.8

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

结论:成功。起初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:我发现如果我们仔细观察生活的话,还是能发现不少有趣的问题的。

时间: 2024-10-10 05:48:48

DNS设置错误,浏览器能够正常访问网站么?的相关文章

设置IE浏览器跨域访问数据

在开发中,经常会遇到多站点跨域访问后台服务获取数据的情况,解决方法有两种 自己写代理服务,访问代理服务,代理服务请求服务获取数据再返回: 设置浏览器可以跨域访问数据. 本文来讲如何设置IE浏览器跨域访问数据,步骤如下: 打开[Internet选项],窗口如下 选择标签[安全],图片如下 选中[Internet],选择[自定义级别],图片如下:      如上图,在[其他]目录下,设置[跨域浏览窗口和框架]和[通过域访问数据源]为启用,确定,即设置成功! 如果站点为[本地intranet],则选择

Chrome浏览器模拟手机访问网站

1. 按F12开打开发者工具,点击红框部分按钮 2. 点击红框部分 3. 输入网址试一下

浏览器访问网站的过程

前言 当我们在浏览器中输入一个网址,比如www.百度.com,浏览器就会加载出百度的主页.那么浏览器背后完成的具体是怎么样的呢?总结起来大概的流程是这样的: (1)浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP (2)然后通过IP地址找到IP对应的服务器后,要求建立TCP连接 (3)浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包 (4)在服务器收到请求之后,服务器调用自身服务,返回HTTP

客户端不能访问网站并报HTTP 500内部服务器错误

一.   生产运行环境: 操作系统:windows server 2008 R2系统 WEB应用服务器:IIS 7.0 数据库系统:SQL Server 2005 二.运行问题 2015年5月22日上午11点左右收到信息,不能访问内网,下午5点20左右发现所有网站无法访问:客户显示的错误:浏览器页面显示"http 500内部服务器错误". 二.   解决问题 因今天到外地去了,在车上已经发现无法访问网站的问题了,只有等我下车后找到一台电脑远程连接学院服务器. 首先分析故障原因,为什么不

如何配置阿里公共DNS——上网加速、无广告、无劫持、访问网站响应快

我们都知道,我们要能上网,就必须要使用DNS,DNS是域名系统,能够使用户更方便的使用互联网,而不用去记住能够被机器直接读取的IP数串,也叫域名 解析.百度也曾经被黑客攻击过DNS,导致无法访问.DNS作为互联网的入口,越来越受到大家的重视.如此重要的东西,也常常被那些隐藏在角落里的黑客惦 记着,主动攻击每天都在发生着.攻击一旦成功,整个互联网的访问就瘫痪了.所以我们有必要更新我们一贯的DNS服务器解析地址.不过发生什么网上DNS国 际攻击,我们都能通过阿里DNS访问国内网站哦,还等什么~ 公众

记录一下访问https报doesn‘t contain CN or DNS sub错误

版本说明 httpclinet:4.3.1jdk:1.6tomcat:6 异常信息 Caused by: javax.net.ssl.SSLException: Certificate for <**> doesn't contain CN or DNS subjectAlt at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:178) at org.apache.http.conn.ssl.Bro

DNS解析原理(客户访问网站流程)

DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作.DNS就是这样的一位"翻译官",它的基本工作原理可用下图来表示.DNS域名称空间的组织方式: 基本流程:1.客户机通过浏览器访问网站:www.baidu.com此过程需要将域名映射为IP地址,首先调用解析函数将待转换的域名放在DNS请求中,以UDP的报文方式发给本地

httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题

近期迷恋上httpclient模拟各种网站登陆,浏览器中的开发者工具中查看请求头信息,然后照葫芦画瓢写到httpclient的请求中去,requestheader中有这么一段设置: Accept-Encoding gzip,deflate 之前模拟其他网站的时候这块并没有太在意,因为无论我在httpclient中添加上这段还是不添加,请求网站数据都没有任何影响,也不影响网站的安全检测,所以当时也就没有特别关注这个设置,直到模拟登陆58同城网站的时候第一次遇到这个问题,当添加上以上的这行请求头设置

IIS 之 添加绑定域名 或 设置输入IP直接访问网站

在IIS中,怎样设置,让IP可以直接访问网站呢? 首先,您的IP必须是固定的,独立的. 1.打开IIS,右键站点 → 编辑绑定,弹出“网站绑定”窗口,如下图: 2.点击“添加”,弹出“添加网站绑定”窗口,如下图: 3.点击“确定”,添加网站绑定.