这是一道互联网大厂的面试真题,主要考察的就是DNS域名解析的过程是什么样的。以此为背景进而考察安全相关问题。综合性还是很强滴。本文将从案例出发开始一步一步深入。

一、DNS运行原理

1、为什么要DNS

DNS的作用在于域名解析。每个网站通常都会有一个域名和至少一个IP地址。比如说百度的域名,112.80.248.74就是百度的IP地址。

我们想要访问百度的时候只需要输入域名就可以,当然IP也可以,为什么不使用IP登录呢?看上面的数字就知道,一串复杂的数字难以记忆。我们每天要登录大量的网站可能都需要一个小本子去记录,访问哪个查哪个,效率低下。因此只需要记住域名即可。

域名解析到ip地址失效(DNS解析时发现域名和IP不一致)(1)

但是问题来了,互联网是通过IP地址进行数据的传输的,因此就需要一种手段来把我们的域名映射为IP地址,这就是DNS的作用。

2、DNS工作原理

既然DNS要把域名映射为IP地址,实现步骤是什么样呢?别着急,我们先来了解一下域名服务器的概念。

域名解析到ip地址失效(DNS解析时发现域名和IP不一致)(2)

从上面这张图可以看到,域名的管理是分层次的。最高级是根,也叫做根服务器。从上往下功能逐渐细化。DNS就是和这些服务器进行打交道。

有了上面的这些概念,现在我们再来认识一下DNS的工作原理就容易多了。DNS域名解析的过程有两种,我们分别来看一下:

(1)递归查询

意思是每次当前服务器查不到时,都由当前的域名服务器代劳查询。

域名解析到ip地址失效(DNS解析时发现域名和IP不一致)(3)

(2)迭代查询

意思是每次当前服务器查不到时,都由自己亲自再去下属服务器查询。

域名解析到ip地址失效(DNS解析时发现域名和IP不一致)(4)

上面两张图解释的比较清晰。太多的文字并不能很好地解决问题。

OK,知道了DNS如何进行域名解析之后,回到我们今天文章的问题。

二、DNS解析域名与IP不一致,访问了该域名会发生什么

我们的问题是基于DNS工作失败之后出现的状况。因此我们答案就是域名解析出现了故障会发生什么。

(1)域名和IP不一致,域名解析成了其他的的IP地址,但是这个IP地址正确。访问该域名就会访问其他的网站。

如何去做呢?知乎上有一个阿里巴巴的回答:

从技术上来讲是可以解析到任意IP地址的,这时候针对这个地址发起HTTP访问,HTTP头中的host字段会是你的域名(而非该IP对应站点的域名),如果对方的网站HTTP服务器没有做对应的防护就可以访问,如果方的网站HTTP服务器有防护则无法访问。

(2)域名和IP不一致,域名解析成了其他的的IP地址,但是这个IP地址错误,访问该域名就会失败。

还有一种情况:访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。

OK,今天的文章先到这。如有问题还请批评指正。

,