1.背景
我们知道,在网络体系中,标识一个主机会用到IP地址,由一连串数字组成的,这并不利于人们的记忆。正如我们不会在线下去用电话号码去认对方,而是通过名字去想起对方一样的道理。因此,我们才通过域名(即现在我们用的网址中,每个“.”左右的都是域名。这里如果还有不甚清楚的,可以先将域名基本相关的概念性问题理清楚,方便后续更容易理解域名解析的基本流程。
2.解析目的
首先我们要理清楚主要的目的:DNS域名解析的是什么?本质就是需要把我们人能容易理解的东西(语言字符)转换转换成计算机容易识别的(或者更确切来说是只能识别的)数字信息,即从一个服务器网址到IP地址的映射。
3.具体过程
便于理解,这里引入一个情景例子。加入你的本地电脑域名是nm.handsome.cn(159.226.1.8),
这里的IP地址是随便代入的,然后你想用你的电脑去获得域名为“www.sina.com.cn"的服务器IP地址,这时会发生这样的步骤流程:
(1)你的电脑首先会发出请求解析域名www.sina.com.cn的报文。
(2)本地域名服务器收到请求后,会先查询本地缓存,假设没有该记录, 则本地域名服务器nm.handsome.cn就会向根域名服务器发出请求解析域名www.sina.com.cn(即(你的电脑)本地域名服务器让根服务器帮其代理完成任务)
(3)根域名服务器收到请求后,会进行一个判断(从右往左进行扫描),判断出该域名属于.cn域,随后给出相应记录(这里的记录是属于cn域的记录),并返回给(你的电脑)本地域名服务器nm.handsome.cn。
(4)(你的电脑)本地域名服务器收到根域名服务器那边的答复后,先缓存其答复的记录,再向其给出的记录中逐一请求解析
(5)之后便不断递归上述的4、5过程,当然域名等级会随着次数变多逐渐降低(毕竟范围也是越来越小,从顶级域名到二级再到三级。。。)
(6)最后找到www.sina.com.cn的域名后,就可获取到其IP地址了,同时将结果缓存进本地缓存,方便下次请求解析时可以直接从本地缓存中找到了。
4.通俗解释
上述如果一时还消化不了(当然讲的真的是很通透了。。。),也可以用这样的思维方式去理解:整个流程可以当作一个推理高手去不断层层获取信息这样看待。你想啊,推理高手再强、获取信息的能力再怎么高效,可是终究躲不过一个问题:就是要先有获取了信息的基础(原材料),才能通过推理去转化为自己有用的认知),这时找谁呢?推理高手一般会找与此有关的人,然后大家想一下电视剧里或动漫里的悬疑情节,是不是逐一问相关人的时候,很少会遇到说,问到一个人,那个人就会说:”啊!这个人(这件事)啊!我都知道,我全都告诉你!” 如果真是这样,那悬疑程度就会立马大打折扣。所以往往都是这样提供信息:“哦~这件事,我只知道......的细节,详细的你可以找某某某人”,然后推理高手就这样一层一层拨茧抽丝,直到所有要找的问通通指向了最终应该要找的关键人。当然以上是剧情需要,而我们强调的是这种过程,是与域名解析的流程思想是很是相像的,大家可以将此作为理解与参考的基础。