前一阵子给一个局做网络的培训,有关于DNS的内容,linux下的bind与windows 2003 server的dns我都配置过,不过还真没认真地总结过,于是查了点资料,结合平时的理解,写了一个DNS的总结,相信对那些经常遇到DNS问题而困惑的人有所帮助吧。
 
    如果某个用户结点希望获得对应"DPT1.SEU.EDU.CN"的IP地址,该结点的处理动作如下:
    1) 向本地DNS服务器发送"解答"请求,为了提高工作效率,采用面向无连接的数据报服务。如果本地DNS服务器知道对应DPT1.SEU.EDU.CN的IP地址,则直接返回IP地址;否则,如果本地DNS服务器知道对应SEU.EDU.CN的DNS的IP地址,则访问SEU.EDU.CN的DNS,获得DPT1.SEU.EDU.CN的DNS系统的IP地址;否则,如果本地DNS服务器知道对应EDU.CN的DNS的IP地址,则访问EDU.CN的DNS,获得SEU.EDU.CN的DNS系统的IP地址;否则,如果本地DNS服务器知道对应CN的DNS的IP地址,则访问CN的DNS,获得EDU.CN的DNS系统的IP地址;否则
 
    2) 本地DNS系统向根DNS系统发送"解答"请求,根DNS系统返回"CN"的DNS系统的IP地址;
   
    3) 本地DNS系统访问CN的DNS,获得EDU.CN的DNS系统的IP地址;
   
    4) 本地DNS系统访问EDU.CN的DNS,获得SEU.EDU.CN的DNS系统的IP地址;
   
    5) 本地DNS系统访问SEU.EDU.CN的DNS,获得DPT1.SEU.EDU.CN的DNS系统的IP地址;
   
    6) 本地DNS系统向用户结点返回对应DPT1.SEU.EDU.CN的IP地址。
 
     细心的读者也许会发现,整个地址的解答过程看起来非常繁琐,为了得到一个IP地址,必须查找多个域名服务器,除了效率之外,还可能存在其它的问题。
       
     首先是根结点DNS服务器可能会成为系统的瓶颈,因为,当本地服务器无法解答IP地址时,总是访问根结点服务器。因特网是那样的大,具有无数的主机和用户,每一时刻将会产生难以计数的地址查询请求。为了解决这一问题,因特网上设置许多互为备份的根结点DNS服务器,用户查询本着就近访问的原则。由于根结点服务器维护的信息是相对稳定的,这一措施是可行的,也在现实中被使用。实际使用中,为了避免每次对自己无法查到的请求转发到根服务器和利用上级服务器的缓存,DNS服务器还可以设置转发器。如果该DNS本身没有对应记录,就向转发器标记的那个DNS查询,用得到 

 
     其次本地DNS服务器的可靠性也是系统得以正常工作的关键,如果某个服务器故障,上述的递归检索将无法实现。为了解决这一问题,在每个域内设置了一个、甚至多个DNS服务器,并将其中之一设置为主服务器,其它的为次级服务器。一旦主服务器出现故障,用户结点自动查询次级服务器。
 
      同时,作为性能改进的一个措施是每个DNS服务器和主机都维护一个缓存装置,暂时存储检索到的域名/IP地址映射信息,从而减少间接访问DNS的次数。带来的问题是缓存信息和原始信息的一致性。因此在实用中,DNS返回的信息内还包含了地址映射的生存期(Time_to_live)。该生存期以秒为单位计数,例如:一天为86400秒。生存期内的地址映射信息被保存,并在必要是被引用。
   
Logo

更多推荐