博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白都能看懂的DNS解析过程
阅读量:3964 次
发布时间:2019-05-24

本文共 967 字,大约阅读时间需要 3 分钟。

DNS是域名系统,作用是将域名解析为IP地址。

域名由点、字母和数字组成,通过点来分割不同的域;域名可以分为顶级域、二级域、三级域,例如:www.baidu.comcom为顶级域,baidu为二级域。

DNS可以将www.baidu.com转换为其实际所用的IP地址

可以把域名从上到下看成一颗树,树的根部为顶级域,根部下面是二级域,二级域下面是三级域

在这里插入图片描述
DNS域名服务器:DNS服务是部署在服务器上的
在这里插入图片描述
假设现在要访问www.baidu.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。如果没有,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会查询本地的域名服务器,如果本地域名服务器知道这个地址对应的IP,就直接返回这个IP地址;

如果本地域名服务器没有直接查找到对应的IP地址,则向根域名服务器发出迭代查询,再将查询到的IP地址信息回传给客户程序。

迭代查询的详细过程如下:

  • 访问根域名服务器,查询com这个顶级域在哪个顶级域名服务器,根域名服务器会告诉本地域名服务器去查询对应的顶级域名服务器
  • 然后本地域名服务器再向com这个顶级域名服务器查询baidu这个二级域应该查询哪个域名服务器,顶级域名服务器会告诉它baidu这个二级域名可以去查询某个本地域名服务器
  • 本地域名服务器知道查询哪个域名服务器之后,就会往另外一个指定的本地域名服务器进行查询,并返回给用户

以上是非转发的模式的过程。

如果采用转发模式(递归) ,则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。


上述在域名解析时涉及到了DNS解析器缓存,什么是域名缓存呢?

域名缓存用来存放最近查询过的域名;在正常访问ip之后,系统会将这个ip存储起来,当再次访问的时候,可以直接通过缓存来获取IP地址;以此来提高DNS的查询效率,减轻服务器的负荷。

可以联想java后端开发中,我们在查询数据库的中间设置一个redis缓存,提高查询效率以及降低数据库的压力。

转载地址:http://ferzi.baihongyu.com/

你可能感兴趣的文章
Java EE 精萃
查看>>
Open Source 精萃
查看>>
Java EE 简介
查看>>
Weblogic 简介
查看>>
观察者模式 (Observer)
查看>>
Java 集合框架
查看>>
Weblogic 精萃
查看>>
Servlet 精萃
查看>>
Servlet 简介
查看>>
Spring 环境设置
查看>>
XStream 精萃
查看>>
XStream 环境设置
查看>>
XStream 例子: Hello World
查看>>
XStream 自定义标签
查看>>
Git 分支
查看>>
Git 冲突
查看>>
Git Merging vs. Rebasing
查看>>
Git 与 Eclipse 整合
查看>>
Kafka 发送消息 Idempotent
查看>>
Kafka 接收消息 at most once -- Spring 整合
查看>>