因特网上的主机采用层次化的命名方法的最大好处就是便于管理。这种层次化的主机名被称为域名(domain name)。域名空间分为若干层次,分别为根域(顶级域)、二级域、三级域等等,其结构就像一颗倒置的树(见图4-24)。
用户因为便于记忆普遍使用域名,而路由器工作需要使用IP地址。为了使二者结合起来,需要一种目录服务来将域名翻译成IP地址。这就是因特网域名系统(Domain Name System,DNS)的主要任务。DNS有两个特点:一,DNS是使用层次式域名服务器实现的分布式数据库;二,DNS本身是一个因特网应用层协议,指导主机与域名服务器相互进行通信以获得翻译服务。DNS使用UDP协议,运行在53号端口。
DNS同时为许多因特网的应用层协议如HTTP、SMTP和FTP提供服务,将用户提供的域名翻译成IP地址。这个翻译工作是通过因特网上的一系列查询过程实现的。例如,某个用户要浏览example.microsoft.com/index.html页面,用户主机为了能够将HTTP的请求报文发送到example.microsoft.com主机,用户主机必须获得该主机的IP地址。为此,用户主机从URL中取出域名example.microsoft.com并传送给本机上的DNS客户端程序,该程序将DNS的查询请求和域名一起送本地DNS服务器。如果本地DNS服务器上有该主机的记录,就立即将其IP地址返回给发出请求的DNS客户端;否则,DNS服务器就会向因特网上最顶层的根域名服务器发出查询请求;接下来的查询会沿着com-microsoft.com-example.microsoft.com的顺序进行,最后在example.microsoft.com域的DNS服务器将会查到主机的IP地址,该地址将作为对查询的响应逐级上传,沿着DNS请求走过的路径返回到最初发出DNS请求的客户端。然后,客户端把逐级传回的DNS响应报文中的IP地址取出,由浏览器启动TCP连接,与该IP代表的主机上的HTTP服务器进程进行通信。这个过程如图4-25所示。
图4-24 域名结构
图4-25 域名解析过程
这样,无论进行何种网络应用,只要在地址栏或链接中应用到了主机域名,DNS都将自动将其转换成IP地址。由于DNS服务使用的频率很高,用户需要就近指定或默认本地DNS服务器来缩短请求/响应时间。(www.xing528.com)
DNS的查询过程,按查询方式的不同,分为递归查询和迭代查询。
递归查询:只发出一次请求,本地主机向本地域名服务器发出查询请求,如果本地域名服务器能够解析,则返回查询结果,否则,本地域名服务器向根请求查询,如果根知道结果则返回给本地域名服务器结果,否则,就由根在向下移级域名查询结果,这样逐级查询,最终逐级返回结果,最终返回到本地主机(图4-25为递归查询过程)。
迭代查询:发出多次请求,本地主机先向本地域名与服务器发出查询请求,如果本地域名服务器能够解析,则返回结果,否则,由本地主机向根查询,同样,如果根能够解析直接返回结果,否则返回负责该域名解析的下一级域名,让本地主机找该域名继续查询,最终,找到结果(图4-26为迭代查询过程)。
图4-26 DNS的迭代查询
在实际的网络中,一般采用两段式查询过程,即先递归,后迭代。从本地主机到本地域名服务器采用递归查询,而从本地域名服务器到最终结果则采用迭代方式查询。读者可以打开命令提示符,输入命令:ipconfig/displaydns可以查到本地系统的dns缓存。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。