DNS解析过程实践分析【nslookup演示】

基本原理

首先一句话概括,DNS就是做域名到IP的映射,rdns表示IP到域名的映射。

怎么映射,其中传递的报文,以及如何进行进行扫描,记录类型都大有讲究。涉及到网络空间测绘当中的DNS扫描,dos也有DNS的相关应用

域名基础解释

首先,早期的DNS实现方案时依赖hosts文件,当然现在也可以,在局域网中还能应用。

现在对于一个简单的域名,它就是由顶级域名和子域名完成的。对于顶级域名,就是常见的.com,.org,.edu等等,而子域当然是千奇百怪。以www.bilibili.com为例:

www 代表主机名,其他的还有mail,space前缀,这些前缀可以标识访问的网站的主要关系,当然是由主站bilibili域名统一管理的。
例如这里www代表主站,mail代表邮箱,space代表个人空间

.com就是一个通用顶级域名。
或许你会问,这些顶级域名又是谁来管理呢,通过迭代,它应该是.com后面的.root,不过现在一般都省略这个,因为通用顶级域名全部由这个管理。
如果你想试试,你可以试着在.com后面加个`.`,它相当于是.root的缩写

域名的组成是倒着书写的,等级越往上的域名,在越后面,.com作为顶级域名,反而是用它结尾的

那么这个根服务器到底是什么呢?用于管理.com/.cn等通用顶级域名,应该非常厉害

根是由13个域名来完成的,注意,并不是13个服务器,这么顶级的东西,当时是阵列来完成的,真实地理位置大多都在美国,例如NASA等地。一共有1467个节点,当然在中国也有啦,通过任播技术,当我们查找顶级域名时就能联系到最近的根域名服务器

也就是 . -> TLD(Top level domain)顶级域名服务器 -> Authoritative 权威域名服务器

域名解析过程

这个过程的核心就是 迭代查询递归查询

首先这个会查看缓存记录,先查看是否有缓存记录或已过时。

假设没有缓存,获取ip需要先发送到解析器中,这里的解析器只是一段c语言实现的脚本,它用于驱动底层网卡而已,它就相当于DNS客户端,它会向DNS服务器发出查询请求,一般情况下,你的dns地址就是网关,这个DNS服务器最终会定位到理你最近的DNS服务器,一般由ISP管理

本地DNS服务器收到请求后会查看自己的缓存,如果是由缓存返回结果,会标注non-authoritative非权威

以nslookup举例,

nslookup
set type=ns
.

DNS解析过程实践分析【nslookup演示】_第1张图片
这样会使用你设定的dns服务器,走53端口,发送udp报文对根服务器进行查询
返回的非权威结果,就是缓存得来的,就是13个域名

继续

set type=a
b.root-servers.net.   (a类型就是IPv4类型)

DNS解析过程实践分析【nslookup演示】_第2张图片
返回非权威结果 199.9.14.201

此时就找到了根域名服务器位置

接下来递归该操作,查找com.的位置

server 199.9.14.201
set type=ns
com.

DNS解析过程实践分析【nslookup演示】_第3张图片
此时返回出一堆com的域名及其IP地址
因为是根负责的com域名,此时返回的是权威结果
此时得到com的IP地址(它已自动给出)
这里有个前缀,gtld就是我们前面提到的TLD顶级域名,gtld表示通用顶级域名

继续递归这个过程查找bilibili

server 192.5.6.30
set type=ns
bilibili.com.

DNS解析过程实践分析【nslookup演示】_第4张图片
由上图可以看到,bilibili的域名服务器有两个ns3,ns4,这个实际上是DNSpod提供的服务,两个域名对应着多个ip地址

接下来继续咨询bilibili的dns服务器,查找主站在哪?

server 1.12.0.17
set type=a
www.bilibili.com.

DNS解析过程实践分析【nslookup演示】_第5张图片
这里返回的是CNAME记录,CNAME就是一个跳转,叫你使用CDN跳转。

最后查找这个cdn
DNS解析过程实践分析【nslookup演示】_第6张图片
恭喜你,已经找到了

最后通过解析器的返回,我们就可以做缓存了,下次就会很快了

解析器与本地DNS服务器的通信就是递归,无限向下,但是会弹回来

而向根域名查找到bilibili主站查找过程就是迭代,无限迭代,直到找到为止。

你可能感兴趣的:(协议分析,DNS,网络协议,网络安全,运维,网络)