功能
把互连网上的主机名转换为IP地址
要点
当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户。
把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。
本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址。
若本地域名服务器不能回答该请求,则此域名服务器暂时成为DNS的另一个客户(递归查询),并向其他域名服务器发出查询请求(一般迭代查询),直至找到能够回答该请求的域名服务器。
域名结构
采用层次树状结构的命名方法。
域:名字空间中一个可被管理的划分,域还可以划分为子域,子域还可以划分为子域,形成顶级域、二级域、三级域等等。
DNS不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
域名是从右往左看的,越往右等级越高。
域名服务器
DNS服务器的管辖范围是以区为单位,区可能等于或小于域,但一定不能大于域,即区是域的子集。
一个服务器所负责管辖(或有权限的)的范围叫做区。
一个区中的所有节点必须是能够连通的。
每个区设置响应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
根域名服务器
根域名服务器是最高层次的域名服务器。
所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。
顶级域名服务器
负责管理在该顶级域名下注册的所有二级域名。
权限域名服务器
负责一个区的域名服务器。
本地域名服务器
当一台主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
不管哪一个本地域名服务器,若要对一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。
域名解析过程
主机向本地域名服务器查询
一般采用递归查询。
如果本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器会以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替主机继续查询)。
递归查询的结果:
- 查到的IP地址
- 报错,表示无法查询到所需的IP地址
本地域名服务器向根域名服务器查询
一般采用迭代查询。
根域名服务器收到本地域名服务器发出的迭代查询请求报文时,本地域名服务器收到的查询结果有两种:
- 查到的IP地址
- 下一步向哪个域名服务器查询
顶级域名服务器在收到本机域名服务器的查询请求后,收到的结果有两种:
- 查到的IP地址
- 下一步向哪个权限域名服务器查询
就这样,本地域名服务器就这样进行迭代查询,最终把得到的结果返回给发起查询的主机。
高速缓存域名服务器
功能:用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
好处:提高DNS查询效率,减轻根域名服务器的负荷和减少互联网上的DNS查询报文数量。
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!