DNS的解析流程

Posted 透明车窗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS的解析流程相关的知识,希望对你有一定的参考价值。

有待整理

https://www.cnblogs.com/f-ck-need-u/p/7367503.html   大佬的详细博文

一、介绍

1、/etc/resolv.conf中关键字searchdomain的作用

  resolv.conf是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问.

domain:

  声明主机的域名。如果没有域名,主机名将被使用。domain mydomain.com  这个用来指定本地的域名,在没有设置search的情况下,search默认为domain的值。

search:

  它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search 声明的域中分别查找。domain 和search 不能共存;如果同时存在,后面出现的将会被使用。

主要是用来补全hostname,有时候域名太长,可以做一个短域名做主机名字,但是DNS解析需要的是FQDN,而在resolv.conf中设置search能进行补全。

search google.com baidu.com  该选项可以用来指定多个域名,中间用空格或tab键隔开。当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的列表为止。

比如 ping  zjz不通

配置后

search firefoxbug.net
nameserver 114.114.114.114 

ping zjz  就成了. ping   zjz.firefoxbug.net

二、部署

 

三、DNS域名解析流程

DNS服务器里存着一张,表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一

浏览器访问某个域名,实际上是访问它的ip地址

所以浏览器需要知道域名对应的ip地址,由此产生dns解析查询流程。

以客户端浏览器访问 www.rootkit.org 域名为例,

1、首先去检查当前浏览器缓存是否有对应IP,如果有,就直接响应,如果没有,就继续往下找。

2、接着,操作系统会去检查自己的hosts文件,如果从中没找到对应关系,会再到系统dns缓存中查,如果缓存中有,就直接返回该域名所对应的ip。

3、如果缓存中没有,则会向我们事先设置好的dns服务器 [ 一般有两个, DNS1 & DNS2 ] 去请求,即所谓的`递归查询`,dns服务器首先会到自身解析数据库中去查。

4、如果dns1(dns2)服务器在自己的解析库中也没找到,它就会自动帮我们向根服务器发送询问请求。

5、此时,根看到要请求的是org的后缀(.org),就会把org所在的dns服务器告诉我们的dns。

6、然后,我们的dns服务器就会去请求org所在的dns服务器

7、当请求到达org dns服务器时,org一看域名是在rootkit这个域下的,就会把rootkit所在的dns服务器告诉我们的dns服务器

8、再然后,我们的dns服务器就会去请求rootkit这个域名的dns服务器

9、rootkit这个域的dns服务器一看是要访问www就直接找到了www对应的A记录的ip,并把它丢给我们的dns,上面逐个询问的过程,即 `迭代查询`

10、最后,我们的dns再把最终解析到的这个ip丢给我们的客户端,然后客户端就直接拿着去访问了

11、返回来的权威结果本地就会就会进行缓存,以便下次查询

简洁版
       1.先向本地dns缓存查看有没有该域名对应的ip地址,有直接跳出,没有接着往下
  2.向根dns服务器询问域名对应的ip地址(根dns服务器会让他去查询顶级dns服务器)
  3.向顶级dns服务器询问域名对应的ip地址(顶级dns服务器会让他去查询权威dns服务器)
  4.向权威dns服务器询问域名对应的ip地址(权威dns服务器会让他去查询二级dns服务器)
  5.向二级dns服务器询问域名对应的ip地址(二级dns服务器会返回对应的ip地址)
  6.接收到ip地址后,会先把ip和域名对应关系保存到本地dns缓存,以便下次方便访问

 

以上是关于DNS的解析流程的主要内容,如果未能解决你的问题,请参考以下文章

DNS解析流程

DNS解析流程

模拟构建DNS解析流程

09-kubernetes中的域名解析流程

DNS 解析流程

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