DNS

  • 什么是DNS

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

DNS的分布数据库是以域名为索引的,每个域名实际上就是一棵很大的逆向树中路径,这棵逆向树称为域名空间(domain name space)

image-20220701102823524

DNS域名解析过程:

浏览器首先看自己浏览器缓存中有没有对应的IP记录同时还要查询一下主机本地文件里面有没有对应记录,如果有记录就已经找到了没有必要进行后面的步骤;都没有记录的话,浏览器进行IP解析是需要调用解析器(就是通过域名获取IP地址的代码),解析器可以帮助浏览器调用系统的网络功能,这个解析器就相当于DNS客户端需要向DNS服务器查询IP地址,现在解析器就会向DNS服务器发送请求;

我们是怎么和DNS服务器联系,我们有他的地址吗?其实我们网络设置里面就可以查询到自己的DNS服务器地址,也就是说我们电脑里面是有这个地址的可以直接联系,如果没有这个地址或者DNS服务器地址设置错误,但是又可以上网,就会出现可以上QQ但是不能浏览网页的情况,因为QQ是直接使用IP地址访问服务器的,这个DNS服务器一般会是最接近我们本地DNS服务器,这台本地DNS服务器一般由ISP负责管理,本地DNS服务器在收到请求后会查看自己的缓存,如果有就直接返回ip地址,并且会标记非权威non-authoritative,毕竟本地DNS服务器并不像.com管控域名,本地DNS服务器只是帮我们走走流程,当然有些本地DNS服务器可能还会记录你解析了什么域名,接下来的步骤就由本地DNS独立完成,解析器只需要等待DNS返回给它的内容

image-20220630224718190

image-20220630224744597

命令行模拟本地DNS服务器后面的解析过程

步骤:1.输入nslookup查看根域名服务器和地址,假设都没有

2.设置查看类型为ns,也就是名称服务器name server

image-20220630224842705

3.要查询根服务器的域名,所以输入一个.表示根,会得到服务器,非权威的结果一般都是缓存的结果,而不是控管的服务器返回的相应结果

image-20220630224913987

4.现在我们知道了域名还需要知道对应的ip地址才可以通话,于是设置type为a,也就是设置ipv4类型

5.现在输入想要的根域名服务器,回车,得到其对应的ip地址,同样是非权威的答复,因为根服务器他知道com域名服务器的地址,于是我们就直接和这个输入的根域名服务器对话

image-20220630224952295

6.输入刚刚输入的根域名服务器的地址

image-20220630225049493

7.设置type=ns,输入com.,也就是向根域名服务器咨询com域名服务器的地址 。这次得到的是权威的响应,顶部是服务器的域名,底部是域名对应的ipv4和ipv6地址,特别需要注意的是gtld表示generic top level domain 通用顶级域名,属于顶级域名tld中最常见的一种

image-20220630225139574

image-20220630225217446

8.我们可以选择顶级通用域名中的一个ipv4地址进行通话 输入 server ipv4域名 设置ns 输入bilibili.com. 。得到bilibili的域名服务器有两个一个是ns3一个是ns4,这两个域名服务器其实是DNSPod平台提供的服务,两个域名各自对应着多个ip地址,随意选择一个地址,就能与权威域名服务器对话

image-20220630225243842

9.输入server IP地址 然后设置type=a 输入www.bilibili.com.也就是向权威域名服务器咨询www.bilibili.com

域名服务器的ipv4地址,回车之后得到

cannonnical name就是CNAME CNAME常用用于域名的跳转 a开头的域名地址其实是一个CDN,也就是内容分发网络,于是我们就必须得到他的ip地址,直接输入ip地址我们就可以得到了结果

image-20220630225418351

10.本地DNS得到地址后会返回给我们的解析器,一般会存在缓存里面,解析器接着把地址给浏览器,浏览器就可以通过这个ip地址去进行网页的连接了,这就是整个解析过程了

image-20220630225500647

需要注意的是:

解析器与本地DNS服务器之间用的是递归的方式传输。传输之后回归,意思是发送数据之后最终结果返回就可以了

本地DNS与三层服务器之间是用的迭代传输,就是一层层传输

image-20220630224813403

posted @ 2022-07-01 16:39  dengdengdeng1998  阅读(127)  评论(0编辑  收藏  举报