写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正。如有不明白的地方,愿可一起探讨。


    

    在网路中,DNS是类似树形目录的形式来进行主机名管理的,因此每台DNS服务器都仅管理自己的下一层主机名的转译而已,至于下层的下层,则授权给下层的DNS主机来管理。本文根据图1来简单介绍通过DNS查询主机名IP的解析流程。

    wKioL1PhkCGjgg0BAAIE0ro47uE641.jpg

    

    你有没有想象过:当你在浏览器的地址栏输入http://www.mageedu.com时,计算机会根据相关的设置(在Linux下是利用/etc/resolv.conf这个配置文件,在Windows下是利用自动获取的DNS服务器地址或自己配置的NDS服务器地址)所提供的DNS的IP去进行连接查询。

   

阶段一 本地向DNS Server服务器发送查询


    当Client向其配置的DNS服务器发送请求时,DNS Server先查看本身有没有记录,若有则直接返回查询结果,若无则向.(root)进行查询。


阶段二 向最顶层的.(root)服务器发送查询


    DNS Server会主动向.(root)询问www.mageedu.com在哪里,但由于.(root)只记录了.com的信息,此时,.(root)会告知DNS Server:“我不知道www.mageedu.com这台主机的IP,不过你可以向.com去询问,并将.com这台主机的IP地址返回给DNS Server。”


阶段三 向第二层的.com服务器发送查询


    DNS Server接着又到.com去询问www.mageedu.com在哪里,而该台主机只记录了.mageedu.com这台主机的信息,所以这个时候,.com又告诉DNS Server说:你要去管理.mageedu.com这个区域的主机那里查询,并将.mageedu.com这台主机的IP发送给DNS Server。 


阶段四 向第三层的.mageedu.com服务器查询


    当DNS Server向.mageedu.com这台主机进行查询时,.mageedu.com发现www.mageedu.com这台主机名是自己所管理的,此时就将www.mageedu.com这台主机的IP地址发送给DNS Server。


阶段五 DNS Server记录缓存并将查询结果发送给用户


    当DNS Server查询到www.mageedu.com的IP后,DNS Server会先记录一份查询结果在自己的缓存中,以方便响应下一次的相同请求,然后将查询结果返回给用户。

    当然,那个记忆在缓冲中的数据,其实是有时间限制的,当过了DNS设置的记忆时间,该记录就会被释放。 


结束语:这只是一个基本的通过DNS查询主机名IP的解析流程,具体的细节以及为什么要进行这样的设计并本文没有进行详细叙述,很抱歉。