DNS递归与迭代查询次数计算
@(计算机网络)
设计缘由
理论上说,整个因特网可以只用一个域名服务器。使它装入因特网上所有的主机域名,并回答所有对IP地址的查询。
但是这么做,这个服务器肯定扛不住,因为因特网太大了。而且一旦这个服务器宕机了,整个因特网就要崩溃,瘫痪。
由此,引入的是层次树状结构,用的是分布式域名系统。
在域名服务器的层次结构中要仔细体会分布式从哪里得到保证。
因特网的域名系统时联机分布式数据库系统,是C/S架构。
DNS**大多数域名在本地解析**,只有少量的解析需要在因特网上通信。
域名的解析由分布在因特网上的许多域名服务程序来共同完成。有专门的结点来运行,这些专门的结点叫域名服务器。
解析过程
某个应用进程,需要把主机名解析为IP地址,该进程就调用解析程序。称为DNS系统的客户,委托DNS为其服务。把待解析的域名放在DNS请求报文里,用UDP协议快速发给本地域名服务器。本地域名服务器查找域名,把对应的IP地址放在回答报文中返回给进程。这样进程拿到IP就可以继续与外部世界通信了。
但是本地域名服务器并不是万能的,没有能力回答该请求时,它不想让下面的主机失望,于是自己要想办法。它把自己变成DNS系统的另一个客户,并向其他域名服务器发出查询请求。直到找到该IP地址为止。
这个本地域名服务器去查询的过程还分为两种:
- 迭代查询
- 递归查询
总之,这个过程非常像底层百姓去求直接领导办事,领导能办的就办,百姓回家。如果领导办不了,不能说让百姓自己想办法,百姓能想到的就是求自己领导啊。于是领导往上级查询。。。