本文共 967 字,大约阅读时间需要 3 分钟。
DNS是域名系统,作用是将域名解析为IP地址。
域名由点、字母和数字组成,通过点来分割不同的域;域名可以分为顶级域、二级域、三级域,例如:www.baidu.com
中com
为顶级域,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/